#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)2e5 + 5;
int n, a[maxn], vis[2 * maxn], mx[maxn];
long long ans;
vector<int> slist[maxn];
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
void doit(int d) {
  for (int i = 0; i < d; i++) mx[i] = 0;
  for (int i = 0; i < n; i++) vis[i] = 0;
  for (int i = 0; i < n; i++) mx[i % d] = max(mx[i % d], a[i]);
  for (int i = 0; i < n; i++)
    if (a[i] == mx[i % d]) vis[i] = 1;
  for (int i = n; i < 2 * n; i++) vis[i] = vis[i - n];
  int lst = -1;
  for (int i = 2 * n - 1; i >= 0; i--) {
    if (vis[i] && lst == -1)
      lst = i;
    else if (!vis[i])
      lst = -1;
    if (lst == -1 || i >= n) continue;
    int len = lst - i + 1;
    int idx =
        upper_bound(slist[d].begin(), slist[d].end(), len) - slist[d].begin();
    ans += idx;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.clear();
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 1; i < n; i++) slist[gcd(i, n)].push_back(i);
  for (int i = 1; i * i <= n; i++) {
    if (n % i) continue;
    doit(i);
    if (n / i != i) doit(n / i);
  }
  cout << ans;
}
