#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n, m, a[1000000], sum, ans, kp;
ll sg[1000000], xg[1000000];
ll vis[1000000];
priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, greater<pair<ll, ll>>> q;
int main() {
cin >> n >> m;
ll op = 0;
for (int i = 1; i <= n; i++) {
sg[i] = i - 1;
xg[i] = i + 1;
ll k;
cin >> k;
if (k > 0) {
if (op == 1) {
a[sum] += k;
} else {
op = 1;
a[++sum] = k;
}
} else {
if (op == 0) {
a[sum] += k;
} else {
op = 0;
a[++sum] = k;
}
}
}
for (int i = 1; i <= sum; i++) {
if (a[i] < 0) {
q.push({abs(a[i]), -i});
} else if(a[i]>0) {
q.push({abs(a[i]), i});
}
if (a[i] > 0) {
kp++;
ans += a[i];
}
}
ll summ = kp;
if (kp <= m) {
cout << ans;
} else {
while (true) {
if (kp <= m || q.empty()) {
cout << ans;
return 0;
}
if (!vis[abs(q.top().second)]) {
ll xx = abs(q.top().second);
if (sg[xx] >= 1 && xg[xx] <= summ || q.top().second > 0) {
ans -= abs(a[xx]);
a[xx] += a[sg[xx]] + a[xg[xx]];
vis[sg[xx]] = vis[xg[xx]] = 1;
sg[xg[xx]] = sg[sg[xx]];
xg[sg[xx]] = xg[xx];
sg[xg[xx]] = sg[sg[xx]];
xg[sg[sg[xx]]] = xg[xx];
q.push({a[xx], xx});
kp--;
}
}
q.pop();
}
cout << ans;
}
return 0;
}