#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define fi first
#define se second
#define pii pair<int, int>
#define all(x) (x).begin(), (x).end()
using namespace std;
const ll INF = 1e18;
const int N = 5e5 + 5;
ll v[2*N], s[2*N], st[8*N];
void build(int id, int l, int r)
{
if (l == r)
{
st[id] = s[l];
return;
}
int mid = (l+r)/2;
build(2*id, l, mid);
build(2*id+1, mid+1, r);
st[id] = min(st[2*id], st[2*id+1]);
}
ll get(int id, int l, int r, int u, int v)
{
if (v < l || r < u) return INF;
if (u <= l && r <= v) return st[id];
int mid = (l+r)/2;
return min(get(2*id, l, mid, u, v), get(2*id+1, mid+1, r, u, v));
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
#define task ""
if (fopen(task".inp", "r"))
{
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int n; cin >> n;
for (int i = 1; i <= n; i++) cin >> v[i];
for (int i = 1; i <= n; i++) v[n+i] = v[i];
for (int i = 1; i <= 2*n; i++) v[i] += v[i-1];
int m = (n+1)/2;
int k = 2*n-m+1;
for (int i = 1; i <= k; i++) s[i] = v[i+m-1] - v[i-1];
build(1, 1, k);
ll res = 0;
for (int i = 1; i <= n; i++) res = max(res, min(get(1, 1, k, max(1, i-m+1), min(i, k)), get(1, 1, k, max(1, i+n-m+1), min(i+n, k))));
cout << res;
return 0;
}