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 val2idx = vec![n; n+1]; for i in 0..n { val2idx[a[i]] = i+1; } let mut result = 0usize; let mut exp = a.iter().sum::(); for i in (1..=n).rev() { let score = val2idx[i]; if exp > 2*score { result = result.max(exp - 2*score); } exp -= score; } println!("{}", result); }