// I may fail a thousand times
// But there is no giving up
// IOI - here I come
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,k,res=-1e18;
int a[(int)2e5+5];
int p[(int)2e5+5];
void brute(int pos,int rem){
	if(rem&&pos>n)return;
	if(!rem){
		int l=1,r=k;
		int ans=0;
		for(int i=1;i<=k;i++){
			if(i&1){
				if(p[l]>p[r]){
					ans+=p[l];
					l++;
				}else{
					ans+=p[r];
					r--;
				}
			}else{
				if(p[l]>p[r]){
					ans-=p[r];
					r--;
				}else{
					ans-=p[l];
					l++;
				}
			}
		}
		res=max(res,ans);
		return;
	}
	brute(pos+1,rem);
	p[k-rem+1]=a[pos];
	brute(pos+1,rem-1);
}
signed main(){
  ios_base::sync_with_stdio(0);cin.tie(0);
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	if(n<=10){
		brute(1,k);
	}else{
	res=0;
	int l=1,r=n;
	for(int i=1;i<=n;i++){
		if(i&1){
			if(a[l]>a[r]){
				res+=a[l];
				l++;
			}else{
				res+=a[r];
				r--;
			}
		}else{
			if(a[l]>a[r]){
				res-=a[r];
				r--;
			}else{
				res-=a[l];
				l++;
			}
		}
	}
	}
	cout<<res<<'\n';
  return 0;
}