//算法核心:尺取法 
//不用前缀和,用前缀和想了半天,循环数组不好解决
//最远距离不超过圆周长的一半,所以当跑在前面的小朋友跑过周长一半时候,
//再跑,两者距离只会减小,没有意义了,应该停下来,后面追的小朋友向前走一步
#include <bits/stdc++.h> 
using namespace std;
int arr[100005];//距离 
int main()
{
    int i,n,j,maxn,sum=0,len=0,flag=0,cnt=0;
    cin>>n;//输入 
    for(i=0;i<n;i++)    {cin>>arr[i];sum+=arr[i];}//记录和,求一半 
    int p=0,half=sum/2;//p为后面追的小朋友 
    for(i=0;i<=n;i++,i%=n)
    {
        len+=arr[i];
        if(len==half)    {maxn=half;break;}//如果距离到周长一半直接输出了 
        while((len>half&&p<=i)||(len>half&&p<=i+n-1))//超过一半时,第二个情况是求第1和第N个小朋友 
        {
            if(!flag)    maxn=len-arr[i];//先找到第一次满足要求的距离 
            flag=1;
            len-=arr[p%n];//后指针向前移动 
            p++;
        }
        maxn=max(maxn,min(len,sum-len));//方便计算直接取len和圆周长减去len的最小值,肯定比周长一半小 
        if(maxn==half)    break;//如果距离是周长一半就输出 
        if(i==0)    cnt++;//计算第1和第N个小朋友间距离时的情况 
        if(cnt==2)    break;
    }
    cout<<maxn<<endl;
}