fn main() { let stdin = std::io::read_to_string(std::io::stdin()).unwrap(); let mut stdin = stdin.split_ascii_whitespace(); let n: usize = stdin.next().unwrap().parse().unwrap(); let a: Vec = (0..n) .map(|_| stdin.next().unwrap().parse().unwrap()) .collect(); println!("{}", output(solve(a))); } fn solve(a: Vec) -> u32 { let mut l = 0; let mut r = a.len() as u32; while l + 1 < r { let c = l.midpoint(r); let mut prev = 0; if a.iter().filter(|&a| *a >= c).all(|a| { if prev < *a { prev = *a; true } else { false } }) { r = c; } else { l = c; } } l } fn output(ans: u32) -> u32 { ans }