#include <iostream>
#include <vector>
using namespace std;
int main() {
int n,k;
cin>>n>>k;
vector<int> arr(n);
for(int i=0;i<n;i++){
cin>>arr[i];
}
vector<vector<int>> dp(k,vector(2,0));
//对买入的股票花销赋初值
for(int i=0;i<k;i++){
dp[i][0]=-arr[0];
}
//遍历
for(int i=1;i<n;i++){
//i时刻第一次买入
dp[0][0]=max(dp[0][0],-arr[i]);
//i时刻第一次卖出
dp[0][1]=max(dp[0][1],dp[0][0]+arr[i]);
for(int j=1;j<k;j++){
//i时刻第j+1次买入
dp[j][0]=max(dp[j][0],dp[j-1][1]-arr[i]);
//i时刻第j+1次卖出,收益为i-1时刻卖出与i时刻卖出的收益最大值
dp[j][1]=max(dp[j][1],dp[j][0]+arr[i]);
}
}
cout<<dp[k-1][1];
return 0;
}
// 64 位输出请用 printf("%lld")