#include <bits/stdc++.h>
using namespace std;
long arr[300001];
long dp[300001][2];
long cnt[300001][2];
long n;
pair<long,long> f(long p) {
dp[0][0] = 0;
dp[0][1] = 0;
cnt[0][0] = 0;
cnt[0][1] = 0;
for (long i = 1; i <= n; i++) {
dp[i][0] = max(dp[i-1][0],dp[i-1][1]-p);
if (dp[i-1][0] > dp[i-1][1]-p) {
cnt[i][0] = cnt[i-1][0];
}
else {
cnt[i][0] = cnt[i-1][1]+1;
}
dp[i][1] = max(dp[i-1][0],dp[i-1][1])+arr[i];
if (dp[i-1][0] > dp[i-1][1]) {
cnt[i][1] = cnt[i-1][0];
}
else {
cnt[i][1] = cnt[i-1][1];
}
}
if (dp[n][0] > dp[n][1]-p) {
return {dp[n][0],cnt[n][0]};
}
else {
return {dp[n][1]-p,cnt[n][1]+1};
}
}
int main() {
long k;
cin >> n >> k;
for (long i = 1; i <= n; i++) {
cin >> arr[i];
}
long lower = 0;
long upper = 1000000000000000;
long a = 0;
while (lower <= upper) {
long mid = (lower+upper)/2;
long x = f(mid).second;
if (x >= k) {
a = mid;
lower = mid+1;
}
else {
upper = mid-1;
}
}
cout << f(a).first+f(a).second*a;
}