//#define _GLIBCXX_DEBUG #include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define all(v) v.begin(), v.end() #define vin(vec) for (int &i : vec) cin >> i; using ll = long long; const ll MOD = 998244353, MOD2 = 1000000007; int main() { int n; cin >> n; vector A(n); rep (i, n) cin >> A[i]; //table[k][i] := Aの[i, i+2**k)におけるgcd int max_k = bit_width((unsigned)n)-1; vector> table(max_k+1); table[0] = A; for (int k = 0; k < max_k; k++) { for (int i = 0; i <= n-pow(2, k+1); i++) { table[k+1].push_back(gcd(table[k][i], table[k][i+pow(2, k)])); } } //[l, r)におけるgcdを求める int ans = 0, l = 0, r = 1; while (r < n) { int k = bit_width((unsigned)(r-l))-1; if (gcd(table[k][l], table[k][r-pow(2, k)]) == 1) { ans += n-r+1; l++; if (l == r) r++; } else r++; } while (l < n) { int k = bit_width((unsigned)(r-l))-1; if (gcd(table[k][l], table[k][r-pow(2, k)]) == 1) { ans++; l++; } else break; } cout << ans << '\n'; }