/*
www.youtube.com/YugiHackerChannel
linktr.ee/YugiHacker
*/
#include<bits/stdc++.h>
#define el cout<<"\n"
#define maxn 300005
using namespace std;
int n, k, a[maxn];
pair <long long, int> dp[maxn][2];
bool check (long long x)
{
dp[0][1] = {-1e18, 0};
for (int i=1; i<=n; i++)
{
dp[i][0] = dp[i][1] = {-1e18, 0};
dp[i][0] = max(dp[i-1][0], dp[i-1][1]);
auto p1 = make_pair(dp[i-1][0].first + a[i] - x, dp[i-1][0].second + 1);
auto p2 = make_pair(dp[i-1][1].first + a[i], dp[i-1][1].second);
dp[i][1] = max(p1, p2);
}
auto p = max(dp[n][0], dp[n][1]);
return max(dp[n][0], dp[n][1]).second >= k;
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> n >> k;
for (int i=1; i<=n; i++) cin >> a[i];
long long l = 0, r = 3e15;
while (r - l > 1)
{
long long mid = (l + r) / 2;
if (check(mid)) l = mid;
else r = mid;
}
check(l);
auto [v, c] = max(dp[n][0], dp[n][1]);
cout << v + 1ll * c * l;
return 0;
}