fn main() { let n: usize = read(); let a: Vec = read_vec(); let mut v: Vec = vec![0; n - 1]; for i in 0..n - 1 { v[a[i] - 1] += 1; } let mut ans: String = "Yes".to_string(); for i in 0..n - 1 { if v[n - i - 2] > i + 1 { ans = "No".to_string(); break; } } println!("{}", ans); } fn read() -> T { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().parse().ok().unwrap() } fn read_vec() -> Vec { read::().split_whitespace() .map(|e| e.parse().ok().unwrap()).collect() }