using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static int[] NMi => ReadLine().Split().Select(c => int.Parse(c) - 1).ToArray(); static int[][] NMap(int n) => Enumerable.Repeat(0, n).Select(_ => NMi).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var c = NList; var (s, t) = (c[0] - 1, c[1] - 1); var a = NList; var cum = new long[n * 2 + 1]; var all = 0L; for (var i = 0; i < n; ++i) { cum[i + 1] = cum[i] + a[i]; all += a[i]; } for (var i = 0; i + 1 < n; ++i) cum[i + n + 1] = cum[i + n] + a[i]; var sl = (n + 1) / 2; var max = 0L; if (s > t) { if ((s - t) % 2 == 0 && (t + n - s) % 2 == 0) { var mid = (s + t) / 2; max = Math.Max(cum[mid + sl] - cum[mid], cum[mid + sl + 1] - cum[mid + 1]); } else if ((s - t) % 2 == 0) { var mid = (s + t) / 2; max = cum[mid + sl] - cum[mid]; } else { var mid = (s + t) / 2 + 1; max = cum[mid + sl] - cum[mid]; } } else { if ((s + n - t) % 2 == 0 && (t - s) % 2 == 0) { var mid = (s + n + t) / 2; max = Math.Max(cum[mid + sl] - cum[mid], cum[mid + sl + 1] - cum[mid + 1]); } else if ((s + n - t) % 2 == 0) { var mid = s + (s + n + t) / 2; max = cum[mid + sl] - cum[mid]; } else { var mid = s + (s + n + t) / 2 + 1; max = cum[mid + sl] - cum[mid]; } } WriteLine(max - all + max); } }