#include using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using u128 = unsigned __int128; using i128 = __int128; void solve() { int N; std::cin >> N; std::vector A(N); for(i64 & x: A) std::cin >> x; int K = 0; while(1 << (K + 1) <= N) K ++; std::vector> st(K + 1); st[0] = A; for(int i = 1; i < K + 1; i ++) { int m = N - (1 << i) + 1; st[i].resize(m); for(int j = 0; j < m; j ++) st[i][j] = std::gcd(st[i - 1][j], st[i - 1][j + (1 << (i - 1))]); } auto check =[&](int l, int r) -> bool { int lg = std::__lg(r - l + 1); return std::gcd(st[lg][l], st[lg][r - (1 << lg) + 1]) == 1; }; i64 ans = 0; for(int i = 0; i < N; i ++) { int l = i, r = N - 1, R = N; while(l <= r) { int mid = l + (r - l) / 2; if(check(i, mid)) { r = mid - 1; R = mid; } else l = mid + 1; } ans += N - R; } std::cout << ans; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int T = 1; //std::cin >> T; while (T--) { solve(); } return 0; }