#include long long a[100005]; int vis[100005]; long long min(long long a,long long b){ return a>b?b:a; } long long max(long long a,long long b){ return a>b?a:b; } long long getSum(int s,int t,int n,int da,int db){ for(int i = 0; i < n; i++) vis[i] = 0; vis[s] = vis[t] = 1; int pa = s, pb = t; long long sumA = a[s], sumB = a[t]; while(true){ int na = pa+da, nb = pb+db; if(na>=n) na -= n; if(nb>=n) nb -= n; if(na<0) na += n; if(nb<0) nb += n; if(vis[na] && vis[nb]) break; if(!vis[na]){ vis[na] = 1; sumA += a[na]; } if(!vis[nb]){ vis[nb] = 1; sumB += a[nb]; } pa = na, pb = nb; } //printf("sumA = %lld, sumB = %lld\n",sumA,sumB); long long res = sumA-sumB; return res; } int main(){ int n,s,t; scanf("%d%d%d",&n,&s,&t); s--, t--; for(int i = 0; i < n; i++) scanf("%lld",&a[i]); long long ans0 = min(getSum(s,t,n,-1,1),getSum(s,t,n,-1,-1)); //printf("ans0 = %lld\n",ans0); long long ans1 = min(getSum(s,t,n,1,1),getSum(s,t,n,1,-1)); //printf("ans1 = %lld\n",ans1); printf("%lld\n",max(ans0,ans1)); return 0; }