// https://szkopul.edu.pl/problemset/problem/e5LK9PxWitOX0_1ujs123Gjq/site/?key=statement
#include <bits/stdc++.h>
using namespace std;
#define int long long
constexpr int sizik = 1000 * 1001;
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef vec<vec<int>> _kra;
int n;
int pref[sizik];
int d(int i, int j) {
if (i > j) std::swap(i, j);
return std::min(pref[i] + pref[n] - pref[j], pref[j] - pref[i]);
}
void solve() {
std::cin >> n;
// std::vector<int> pref(n + 1);
for (int i = 1; i <= n; i++) {
std::cin >> pref[i];
pref[i] += pref[i - 1];
}
int ans = 0;
int p = 0, k = 0;
while (p < n && k < n) {
if (p > k) {
k++;
} else if (k == n - 1) {
ans = std::max(ans, d(p, k));
p++;
} else {
int d1 = d(p, k);
int d2 = d(p, k + 1);
if (d2 > d1) {
ans = std::max(ans, d2);
k++;
} else {
p++;
}
}
}
std::cout << ans << '\n';
}
int32_t main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}