#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll INF = (ll)4e18;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
if (!(cin >> N)) return 0;
vector<ll> T(N);
for (int i = 0; i < N; ++i) cin >> T[i];
// 초기 완료시간: 시간 0에 시작했을 때 (도움 없는 경우)
vector<ll> c(N, INF);
priority_queue<pair<ll,int>, vector<pair<ll,int>>, greater<pair<ll,int>>> pq;
for (int i = 0; i < N; ++i) {
c[i] = T[i];
pq.push({c[i], i});
}
while (!pq.empty()) {
auto [t, u] = pq.top(); pq.pop();
if (t != c[u]) continue; // outdated
// relax neighbors v = u-1, u+1
for (int dir = -1; dir <= 1; dir += 2) {
int v = u + dir;
if (v < 0 || v >= N) continue;
// 한쪽 도움 (u가 이미 천재인 경우)
ll cand1 = t + (T[v] / 2); // floor
if (cand1 < c[v]) {
c[v] = cand1;
pq.push({c[v], v});
}
// 양쪽 도움: v의 다른 쪽 이웃 w가 이미 알고 있는 경우
int w = v + ( (v == u) ? 0 : 0 ); // dummy, we compute w explicitly below
// other neighbor of v (not u)
int other = v + ( (u == v-1) ? 1 : -1 ); // if u == v-1 then other = v+1 else other = v-1
if (other >= 0 && other < N && c[other] < INF) {
ll maxneigh = max(t, c[other]);
ll cand2 = maxneigh + (T[v] / 4); // floor
if (cand2 < c[v]) {
c[v] = cand2;
pq.push({c[v], v});
}
}
}
}
ll ans = 0;
for (int i = 0; i < N; ++i) ans = max(ans, c[i]);
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwpjb25zdCBsbCBJTkYgPSAobGwpNGUxODsKCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGludCBOOwogICAgaWYgKCEoY2luID4+IE4pKSByZXR1cm4gMDsKICAgIHZlY3RvcjxsbD4gVChOKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKSBjaW4gPj4gVFtpXTsKCiAgICAvLyDstIjquLAg7JmE66OM7Iuc6rCEOiDsi5zqsIQgMOyXkCDsi5zsnpHtlojsnYQg65WMICjrj4Tsm4Ag7JeG64qUIOqyveyasCkKICAgIHZlY3RvcjxsbD4gYyhOLCBJTkYpOwogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsbCxpbnQ+LCB2ZWN0b3I8cGFpcjxsbCxpbnQ+PiwgZ3JlYXRlcjxwYWlyPGxsLGludD4+PiBwcTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkgewogICAgICAgIGNbaV0gPSBUW2ldOwogICAgICAgIHBxLnB1c2goe2NbaV0sIGl9KTsKICAgIH0KCiAgICB3aGlsZSAoIXBxLmVtcHR5KCkpIHsKICAgICAgICBhdXRvIFt0LCB1XSA9IHBxLnRvcCgpOyBwcS5wb3AoKTsKICAgICAgICBpZiAodCAhPSBjW3VdKSBjb250aW51ZTsgLy8gb3V0ZGF0ZWQKICAgICAgICAvLyByZWxheCBuZWlnaGJvcnMgdiA9IHUtMSwgdSsxCiAgICAgICAgZm9yIChpbnQgZGlyID0gLTE7IGRpciA8PSAxOyBkaXIgKz0gMikgewogICAgICAgICAgICBpbnQgdiA9IHUgKyBkaXI7CiAgICAgICAgICAgIGlmICh2IDwgMCB8fCB2ID49IE4pIGNvbnRpbnVlOwogICAgICAgICAgICAvLyDtlZzsqr0g64+E7JuAICh16rCAIOydtOuvuCDsspzsnqzsnbgg6rK97JqwKQogICAgICAgICAgICBsbCBjYW5kMSA9IHQgKyAoVFt2XSAvIDIpOyAvLyBmbG9vcgogICAgICAgICAgICBpZiAoY2FuZDEgPCBjW3ZdKSB7CiAgICAgICAgICAgICAgICBjW3ZdID0gY2FuZDE7CiAgICAgICAgICAgICAgICBwcS5wdXNoKHtjW3ZdLCB2fSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8g7JaR7Kq9IOuPhOybgDogduydmCDri6Trpbgg7Kq9IOydtOybgyB36rCAIOydtOuvuCDslYzqs6Ag7J6I64qUIOqyveyasAogICAgICAgICAgICBpbnQgdyA9IHYgKyAoICh2ID09IHUpID8gMCA6IDAgKTsgLy8gZHVtbXksIHdlIGNvbXB1dGUgdyBleHBsaWNpdGx5IGJlbG93CiAgICAgICAgICAgIC8vIG90aGVyIG5laWdoYm9yIG9mIHYgKG5vdCB1KQogICAgICAgICAgICBpbnQgb3RoZXIgPSB2ICsgKCAodSA9PSB2LTEpID8gMSA6IC0xICk7IC8vIGlmIHUgPT0gdi0xIHRoZW4gb3RoZXIgPSB2KzEgZWxzZSBvdGhlciA9IHYtMQogICAgICAgICAgICBpZiAob3RoZXIgPj0gMCAmJiBvdGhlciA8IE4gJiYgY1tvdGhlcl0gPCBJTkYpIHsKICAgICAgICAgICAgICAgIGxsIG1heG5laWdoID0gbWF4KHQsIGNbb3RoZXJdKTsKICAgICAgICAgICAgICAgIGxsIGNhbmQyID0gbWF4bmVpZ2ggKyAoVFt2XSAvIDQpOyAvLyBmbG9vcgogICAgICAgICAgICAgICAgaWYgKGNhbmQyIDwgY1t2XSkgewogICAgICAgICAgICAgICAgICAgIGNbdl0gPSBjYW5kMjsKICAgICAgICAgICAgICAgICAgICBwcS5wdXNoKHtjW3ZdLCB2fSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbGwgYW5zID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgKytpKSBhbnMgPSBtYXgoYW5zLCBjW2ldKTsKICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICByZXR1cm4gMDsKfQ==