#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define x first
#define y second
#define bg begin()
#define ed end()
#define pb push_back
#define mp make_pair
#define sz(a) int((a).size())
#define R(i,a,b) for(int i(a),i##E(b);i<i##E;i++)
#define L(i,a,b) for(int i((b)-1),i##E((a)-1);i>i##E;i--)
const int iinf=0x3f3f3f3f;
const ll linf=0x3f3f3f3f3f3f3f3f;
//Data
const int N=5e5;
int n,k; ll a[N];
pair<int,int> e[N];
void del(int i){
if(!~i) return;
if(~e[i].x) e[e[i].x].y=e[i].y;
if(~e[i].y) e[e[i].y].x=e[i].x;
e[i]=mp(-2,-2);
}
priority_queue<pair<ll,int>> q;
//Main
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>k;
R(i,0,n) cin>>a[i],e[i]=mp(i-1,i+1),
q.push(mp(a[i],i));
ll ns=0;
while(sz(q)&&k){
int i=q.top().y; q.pop();
if(e[i].x==-2) continue;
if(a[i]<=0) break;
k--,ns+=a[i],a[i]=-a[i];
if(~e[i].x) a[i]+=a[e[i].x];
if(~e[i].y) a[i]+=a[e[i].y];
del(e[i].x),del(e[i].y);
q.push(mp(a[i],i));
}
cout<<ns<<'\n';
return 0;
}