#include <bits/stdc++.h>   using namespace std;   template <ostream& out = cout, class... T>   void prints(T&&...) {}   template <ostream& out = cout, class... T>   void printe(T&&...) {}   template <ostream& out = cout, class... T>   void printw(T&&...) {}   template <ostream& out = cout, class... T>   void printew(T&&...) {}   template <ostream& out = cout, class... T>   void printb(T&&...) {}   template <ostream& out = cout, class... T>   void printd(T&&...) {}   template <ostream& out = cout, class... T>   void printde(T&&...){};   template <class T>   istream& operator>>(istream& in, vector<T>& v) {     for (auto& e : v) {       in >> e;     }     return in;   }   int main() {     int n;     cin >> n;     vector<char> s(n);     cin >> s;     int k = 0;     bool pr;     for (int i = 0; i < n; i++) {       if (s[i] ==  1 ) {         k++;         pr = true;       } else {         break;       }     }     if (k == n) {       cout <<  YES ;       return 0;     }     int l = 0;     for (int i = 0; i < n; i++) {       if (s[i] ==  0 ) {         l++;         pr = false;       } else {         break;       }     }     if (l == n) {       cout <<  YES ;       return 0;     }     int m;     m = max(l, k);     for (int i = 0; i < n; i = i + m) {       if (s[i] ==  1  && pr) {         for (int j = 0; j < m; j++) {           if (s[j + i] !=  1 ) {             cout <<  NO ;             return 0;           }         }         pr = false;         continue;       }       if (s[i] ==  0  && !pr) {         for (int j = 0; j < m; j++) {           if (s[j + i] !=  0 ) {             cout <<  NO ;             return 0;           }         }         pr = true;         continue;       }       cout <<  NO ;       return 0;     }     cout <<  YES ;   }   