use std::cmp::{max, min}; fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut st = String::new(); std::io::stdin().read_line(&mut st).ok(); let st: Vec = st.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let s = st[0] - 1; let t = st[1] - 1; 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 summary: isize = a.iter().map(|&i| i as isize).sum(); let diff = max(s, t) - min(s, t) - 1; let mut player_a = 0isize; if s > t { let idx = s - (diff+1) / 2; for i in 0..n/2+n%2 { player_a += a[(idx+i) % n] as isize; } if diff % 2 == 1 && n % 2 == 0 { let mut temp = player_a; temp -= a[idx] as isize; temp += a[(idx+n/2+n%2)%n] as isize; player_a = max(player_a, temp); } } else { let idx = s + (diff+1) / 2; for i in 0..n/2+n%2 { player_a += a[(idx+n-i) % n] as isize; } if diff % 2 == 1 && n % 2 == 0 { let mut temp = player_a; temp -= a[idx] as isize; temp += a[(idx+n/2+n%2)%n] as isize; player_a = max(player_a, temp); } } println!("{}", player_a * 2 - summary); }