fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut a = String::new(); std::io::stdin().read_line(&mut a).ok(); let a: Vec = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let mut evens = vec![0isize; n]; let mut odds = vec![0isize; n]; for i in (0..n-1).step_by(2) { if odds[i] > 0 { continue; } let mut idx = i; while idx < n-1 && a[idx] == 1 - idx % 2 { idx += 1; } for j in i..idx { odds[j] = (idx - j) as isize; } } for i in (1..n-1).step_by(2) { if evens[i] > 0 { continue; } let mut idx = i; while idx < n-1 && a[idx] == idx % 2 { idx += 1; } for j in i..idx { evens[j] = (idx - j) as isize; } } let mut result = 0isize; for i in 0..n { result += if i % 2 == 1 { evens[i] } else { odds[i] }; } println!("{}", result); }