use proconio::input; fn main() { input! { n: usize, mut h: [usize; n], } let mut ans = 0; let mut p = 1; for bit in 0..=60 { h.sort(); if let Some(i) = h.iter().position(|&x| (x >> bit) & 1 == 1) { h[i] -= p; ans += 1; } else { for i in 0..n { if 0 < h[i] { h[i] = h[i].saturating_sub(p); ans += 1; break; } } } p *= 2; } println!("{}", ans); }