#include <bits/stdc++.h>
using namespace std;
int N;
vector<int> V;
vector<pair<int, int>> P;
bool solve(vector<int>& v, int pi) {
  int n = v.size();
  if (n == 1) return v[0] == 0;
  int p = P[pi].first;
  int pp = P[pi].second;
  for (int i = 0; i < pp / p; i++) {
    vector<vector<int>> split;
    for (int j = 0; j < p; j++) {
      vector<int> pgon;
      for (int k = 0; k < n / pp; k++) {
        if ((i + j * (n / p) + k * pp) % n < 0) {
          cerr << endl;
          cerr << i << " " << j << " " << k << endl;
          cerr << j << " * " << n << " / " << p << endl;
          cerr << i << " + " << j * n / p << " + " << k * pp << " mod " << n
               << endl;
        }
        pgon.push_back(v[(i + j * (n / p) + k * pp) % n]);
      }
      split.push_back(pgon);
    }
    for (int j = 1; j < split.size(); j++) {
      for (int k = 0; k < split[j].size(); k++) {
        split[j][k] -= split[0][k];
      }
    }
    for (int j = 1; j < split.size(); j++) {
      if (!solve(split[j], pi + 1)) {
        if (N == 3960) {
          cout << "Got back false at " << pi << " " << p << " " << i << endl;
        }
        return false;
      }
    }
  }
  return true;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> N;
  for (int i = 0; i < N; i++) {
    char c;
    cin >> c;
    V.push_back(c - '0');
  }
  int p = 2;
  int nn = N;
  while (nn > 1) {
    if (nn % p != 0) {
      p++;
      continue;
    }
    int c = 1;
    while (nn % p == 0) {
      nn /= p;
      c *= p;
    }
    P.push_back({p, c});
    p++;
  }
  bool r = solve(V, 0);
  cout << (r ? "YES" : "NO") << endl;
}
