#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
  if (!b) return a;
  return gcd(b, a % b);
}
int mxG[200][200005];
int main() {
  int n;
  scanf("%d", &n);
  int a[200005];
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  vector<int> gs;
  vector<int> gmap[200005];
  for (int i = 1; i < n; i++) {
    int g = gcd(i, n);
    gmap[g].push_back(i);
  }
  for (int i = 1; i < n; i++) {
    if (gmap[i].size() > 0) {
      gs.push_back(i);
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < gs.size(); j++) {
      int x = i % gs[j];
      mxG[j][x] = max(mxG[j][x], a[i]);
    }
  }
  long long cnt = 0;
  vector<int> len(gs.size(), 0);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < gs.size(); j++) {
      if (a[i] == mxG[j][i % gs[j]]) {
        while (len[j] < n &&
               a[(i + len[j]) % n] == mxG[j][((i + len[j]) % n) % gs[j]])
          len[j]++;
        cnt += upper_bound(gmap[gs[j]].begin(), gmap[gs[j]].end(), len[j]) -
               gmap[gs[j]].begin();
        len[j]--;
      }
    }
  }
  cout << cnt << endl;
}
