#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

typedef unsigned long long ull;

// Sử dụng Modulo 2^61 - 1 (Số nguyên tố Mersenne) cực nhanh và an toàn
typedef __int128_t int128;
const ull MOD = (1ULL << 61) - 1;

ull modMul(ull a, ull b) {
    int128 res = (int128)a * b;
    ull ans = (ull)(res >> 61) + (ull)(res & MOD);
    if (ans >= MOD) ans -= MOD;
    return ans;
}

int N;
int A[100005];
ull powB[100005];
ull hFwd[100005], hBwd[100005];
int B[100005], revC[100005];
long long F[205], exact[205];

void buildHash(int* v, ull* h) {
    h[0] = 0;
    for (int i = 0; i < N; i++) {
        h[i + 1] = (modMul(h[i], 211) + v[i]) % MOD;
    }
}

ull getHash(ull* h, int l, int r) {
    ull res = h[r] + MOD - modMul(h[l - 1], powB[r - l + 1]);
    return res % MOD;
}

int main() {
    // Tăng tốc nhập xuất tối đa
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    if (!(cin >> N)) return 0;
    for (int i = 1; i <= N; i++) cin >> A[i];

    powB[0] = 1;
    for (int i = 1; i <= N; i++) powB[i] = modMul(powB[i - 1], 211);

    for (int g = 1; g <= 200; g++) {
        // Tối ưu: Điền trực tiếp vào mảng tĩnh
        for (int i = 0; i < N; i++) {
            int val = A[i + 1] % g;
            B[i] = val;
            revC[N - 1 - i] = (val == 0) ? 0 : g - val;
        }

        buildHash(B, hFwd);
        buildHash(revC, hBwd);

        long long total_g = 0;
        for (int i = 1; i < N; i++) {
            int low = 1, high = min(i, N - i);
            int best_k = 0;
            
            // Một tối ưu nhỏ: check nhanh k=1 trước khi vào Binary Search
            if ( (A[i] + A[i+1]) % g != 0 ) continue;

            while (low <= high) {
                int mid = low + (high - low) / 2;
                // So sánh hash
                if (getHash(hFwd, i - mid + 1, i) == getHash(hBwd, N - (i + mid) + 1, N - i)) {
                    best_k = mid;
                    low = mid + 1;
                } else {
                    high = mid - 1;
                }
            }
            total_g += best_k;
        }
        F[g] = total_g;
    }

    long long total_ans = 0;
    for (int g = 200; g >= 1; g--) {
        exact[g] = F[g];
        for (int m = 2 * g; m <= 200; m += g) exact[g] -= exact[m];
        total_ans += (long long)g * exact[g];
    }

    cout << total_ans << endl;
    return 0;
}