#include <bits/stdc++.h>
using namespace std;
#define MAX 100005
#define bitscount 32
typedef long long ll;
// swap -> delete one element and/or insert another element
// -> we can delete one element or insert one element or both or do nothing
void solve() {
ll n;
cin >> n;
vector<ll> a(n + 1);
for (ll i = 1; i <= n; i++) cin >> a[i];
ll mx_del = 0, max_pref = 0;
// max subarray sum ending at i if we didnt delete or add any elment
vector<ll> dp_5aliyh(n + 1);
// max subarray sum ending at i if we delete one elment
vector<ll> dp_na7iyh(n + 1);
// max subarray sum ending at i if we add one elment
vector<ll> dp_ziydo(n + 1);
// max subarray sum ending at i if we delete one elment and add one element
vector<ll> dp_lzouz(n + 1);
vector<ll> ans(n + 1);
for (int i = 1; i <= n; i++) {
ans[i] = ans[i - 1];
dp_5aliyh[i] = max(dp_5aliyh[i - 1], 0LL) + a[i];
dp_na7iyh[i] = max(dp_na7iyh[i - 1] + a[i], dp_5aliyh[i] - a[i]);
dp_ziydo[i] = max(dp_ziydo[i - 1] + a[i], a[i] + max_pref);
dp_lzouz[i] = max({dp_lzouz[i - 1] + a[i], dp_ziydo[i - 1], dp_na7iyh[i - 1] + a[i]});
//a[i]+mx_del : if the ith one will be added so take the max subarray that has one element deleted
ans[i] = max({ans[i], dp_5aliyh[i],dp_ziydo[i],dp_na7iyh[i], dp_lzouz[i], a[i] + mx_del});
max_pref = max(max_pref, a[i]);
mx_del = max(mx_del, dp_na7iyh[i]);
}
for (int i = 1; i <= n; i++) {
cout << ans[i] << " ";
}
cout << "\n";
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t=1;
//cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTUFYIDEwMDAwNQojZGVmaW5lIGJpdHNjb3VudCAzMgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCi8vIHN3YXAgLT4gZGVsZXRlIG9uZSBlbGVtZW50IGFuZC9vciBpbnNlcnQgYW5vdGhlciBlbGVtZW50IAovLyAtPiB3ZSBjYW4gZGVsZXRlIG9uZSBlbGVtZW50ICAgIG9yICBpbnNlcnQgb25lIGVsZW1lbnQgIG9yIGJvdGggIG9yIGRvIG5vdGhpbmcKCnZvaWQgc29sdmUoKSB7CiAgICBsbCBuOwogICAgY2luID4+IG47CiAgICB2ZWN0b3I8bGw+IGEobiArIDEpOwogICAgZm9yIChsbCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgbGwgbXhfZGVsID0gMCwgbWF4X3ByZWYgPSAwOwogICAgLy8gbWF4IHN1YmFycmF5IHN1bSBlbmRpbmcgYXQgaSBpZiB3ZSBkaWRudCBkZWxldGUgb3IgYWRkIGFueSBlbG1lbnQKICAgIHZlY3RvcjxsbD4gZHBfNWFsaXloKG4gKyAxKTsgCiAgICAKICAgIC8vIG1heCBzdWJhcnJheSBzdW0gZW5kaW5nIGF0IGkgaWYgd2UgIGRlbGV0ZSBvbmUgZWxtZW50CiAgICB2ZWN0b3I8bGw+IGRwX25hN2l5aChuICsgMSk7IAogICAgCiAgICAvLyBtYXggc3ViYXJyYXkgc3VtIGVuZGluZyBhdCBpIGlmIHdlICBhZGQgb25lIGVsbWVudAogICAgdmVjdG9yPGxsPiBkcF96aXlkbyhuICsgMSk7CiAgICAKICAgIC8vIG1heCBzdWJhcnJheSBzdW0gZW5kaW5nIGF0IGkgaWYgd2UgIGRlbGV0ZSBvbmUgZWxtZW50IGFuZCBhZGQgb25lIGVsZW1lbnQKICAgIHZlY3RvcjxsbD4gZHBfbHpvdXoobiArIDEpOyAKICAgIAogICAgCgogICAgdmVjdG9yPGxsPiBhbnMobiArIDEpOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgYW5zW2ldID0gYW5zW2kgLSAxXTsKICAgICAgICBkcF81YWxpeWhbaV0gPSBtYXgoZHBfNWFsaXloW2kgLSAxXSwgMExMKSArIGFbaV07CiAgICAgICAgZHBfbmE3aXloW2ldID0gbWF4KGRwX25hN2l5aFtpIC0gMV0gKyBhW2ldLCBkcF81YWxpeWhbaV0gLSBhW2ldKTsKICAgICAgICBkcF96aXlkb1tpXSA9IG1heChkcF96aXlkb1tpIC0gMV0gKyBhW2ldLCBhW2ldICsgbWF4X3ByZWYpOwogICAgICAgIGRwX2x6b3V6W2ldID0gbWF4KHtkcF9sem91eltpIC0gMV0gKyBhW2ldLCBkcF96aXlkb1tpIC0gMV0sIGRwX25hN2l5aFtpIC0gMV0gKyBhW2ldfSk7CiAgICAgICAgCiAgICAgICAgLy9hW2ldK214X2RlbCA6IGlmIHRoZSBpdGggb25lIHdpbGwgYmUgYWRkZWQgc28gdGFrZSB0aGUgbWF4IHN1YmFycmF5IHRoYXQgaGFzIG9uZSBlbGVtZW50IGRlbGV0ZWQKICAgICAgICBhbnNbaV0gPSBtYXgoe2Fuc1tpXSwgZHBfNWFsaXloW2ldLGRwX3ppeWRvW2ldLGRwX25hN2l5aFtpXSwgZHBfbHpvdXpbaV0sIGFbaV0gKyBteF9kZWx9KTsKICAgICAgICBtYXhfcHJlZiA9IG1heChtYXhfcHJlZiwgYVtpXSk7CiAgICAgICAgbXhfZGVsID0gbWF4KG14X2RlbCwgZHBfbmE3aXloW2ldKTsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNvdXQgPDwgYW5zW2ldIDw8ICIgIjsKICAgIH0KICAgIGNvdXQgPDwgIlxuIjsKfQoKaW50IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaW50IHQ9MTsKICAgIC8vY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K