#include using namespace std; using ll = long long; using vi = vector; ll gcd(ll a, ll b) { while (b) a %= b, swap(a, b); return a; } void comp(int l, int r, vi &A, std::unordered_set &total, vi &p, vi &s) { if (r - l == 1) { p.push_back(A[l]); s.push_back(A[l]); total.insert(A[l]); return; } int m = (l+r)/2; vi ls, rp; comp(l, m, A, total, p, ls); comp(m, r, A, total, rp, s); for (ll v : rp) for (ll w : ls) total.insert(gcd(v, w)); for (ll v : rp) { ll g = gcd(v, p.back()); if (g != p.back()) { p.push_back(g); total.insert(g); } } for (ll v : ls) { ll g = gcd(s.back(), v); if (g != s.back()) { s.push_back(g); total.insert(g); } } } int main() { ios::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; vi A(N, 0LL); for (ll &a : A) cin >> a; std::unordered_set total; vi p, s; comp(0, N, A, total, p, s); cout << total.size() << endl; return 0; }