#include <bits/stdc++.h>
using namespace std;
#define hv signed main
#define int long long
#define all(x) x.begin(),x.end()
#define fileinp(name) freopen(name,"r",stdin)
#define fileout(name) freopen(name,"w",stdout)
#define loop(i, start, end, step) for (long long i = start; i <=end; i += step)
#define rloop(i,start,end,step) for(long long i = end; i>=start;i-=step)
#define fastio ios_base::sync_with_stdio(false);cout.tie(0);cin.tie(0)
#define ins push_back
template <typename T>
using v = vector<T>;
const int maxn = 3e5+5;
int n,a[maxn],k;
hv(){
cin >> n >> k;
loop(i,0,n-1,1)cin >> a[i];
auto check = [&](int lmb) -> pair<int,int>{
pair<int,int> dp[n][2];
dp[0][0] = {0, 0};
dp[0][1] = {a[0] - lmb, 1};
for (int i = 1; i < n; i++) {
dp[i][0] = max(dp[i - 1][0], dp[i - 1][1]);
dp[i][1] =
max(make_pair(dp[i - 1][0].first + a[i] - lmb, dp[i - 1][0].second + 1),
make_pair(dp[i - 1][1].first + a[i], dp[i - 1][1].second));
}
return max(dp[n - 1][0], dp[n - 1][1]);
};
int l = 0, r = 1e15,ans = 0;
while(l <= r){
int mid = (l+r)/2;
pair<int,int> response = check(mid);
if(response.second >= k){
l = mid+1;
ans = mid;
}
else r = mid-1;
}
cout << check(ans).first + ans*k;
}