use std::collections::*; use std::ops::Bound::*; fn main() { let n = read::(); let mut a = BTreeSet::new(); for i in 0..n { a.insert((read::(), i)); } let mut ans = 0; while let Some(&(size, idx)) = a.iter().next() { ans += 1; let mut used = vec![(size, idx)]; let mut cur = size; while let Some(&(ns, nidx)) = a.range((Included((cur + 2, 0)), Unbounded)).next() { used.push((ns, nidx)); cur = ns; } for elem in used { a.remove(&elem); } } println!("{}", ans); } fn read() -> T { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().parse().ok().unwrap() }