#include <bits/stdc++.h>
#define int long long
int n,k;
int arr[300010];
int l[300010],r[300010];
int pref[300010];
bool enable[300010];
std::vector<int> narr;
signed main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin >> n >> k;
int currRange = 0;
for(int i=0;i<n;i++)std::cin >> arr[i];
for(int i=0;i<n;i++){
if(arr[i]<=0)arr[i]=0;
else break;
}
for(int i=n-1;i>=0;i--){
if(arr[i]<=0)arr[i]=0;
else break;
}
narr.push_back(-1e9);
for(int i=0;i<n;i++){
if(arr[i]!=0){
if(narr.empty())narr.push_back(arr[i]);
else if(arr[i]>0&&narr.back()>0)narr.back()+=arr[i];
else if(arr[i]<0&&narr.back()<0)narr.back()+=arr[i];
else narr.push_back(arr[i]);
}
}
narr.push_back(-1e9);
int range = 0;
int sum = 0;
std::priority_queue<std::pair<int,int>> neg;
for(int i=0;i<narr.size();i++){
if(narr[i]>0){
sum+=narr[i];
range+=1;
neg.push({-narr[i],i});
}
else{
if(n!=0&&n!=narr.size()-1)
neg.push({narr[i],i});
}
l[i]=i-1,r[i]=i+1,enable[i]=true;
if(i==0)l[i]=i;
if(i==narr.size()-1)r[i]=i;
if(i==0)pref[i]=narr[i];
else pref[i+1]=pref[i-1+1]+narr[i];
}
if(range<=k){
std::cout << sum << '\n';
return 0;
}
while(range>k){
while(!neg.empty()&&!enable[neg.top().second])neg.pop();
if(neg.empty())break;
int value = -neg.top().first;
int idx = neg.top().second;
neg.pop();
sum-=value;
int li=l[idx],ri=r[idx];
//std::cout << li << ' ' << idx << ' ' << ri << '\n';
int newVal=(li!=0?narr[li]:0)+(ri!=narr.size()-1?narr[ri]:0)-narr[idx];
enable[li]=false;
enable[ri]=false;
l[idx]=l[li];
r[idx]=r[ri];
r[l[idx]]=idx;
l[r[idx]]=idx;
neg.push({-std::abs(newVal),idx});
range-=1;
}
std::cout << sum;
}