use std::io::Read; fn gcd(a: u64, b: u64) -> u64 { if b == 0 { a } else { gcd(b, a % b) } } fn run() { let mut s = String::new(); std::io::stdin().read_to_string(&mut s).unwrap(); let mut it = s.trim().split_whitespace(); it.next(); let mut ans = 0; let mut stack = vec![]; for s in it { let a: u64 = s.parse().unwrap(); stack.push((a, 1u64)); for p in stack.iter_mut() { p.0 = gcd(p.0, a); } stack.dedup_by(|a, b| { let cond = a.0 == b.0; if cond { b.1 += a.1; } cond }); if stack[0].0 == 1 { ans += stack[0].1; } } println!("{}", ans); } fn main() { run(); }