#include<bits/stdc++.h>
using namespace std;

#define IOS ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define pb push_back 
#define ppb pop_back
#define fi first
#define se second

vector<long long> resenje;

int maksimalna(vector<int>& kombinacija, long long a[]){
	int n = kombinacija.size();
	int ukupno = 1 << (n - 1);
	long long maxi = -20000000000, maxi2;
	int levi = 0, desni = n - 1;
	int broj;
	for(int i=0; i<ukupno; i++){
		levi = 0;
		desni = n - 1;
		broj = i;
		if(broj % 2 == 0){
			maxi2 = a[kombinacija[desni]];
		}
		else{
			maxi2 = a[kombinacija[levi]];
		}
		levi = 0;
		desni = n - 1;
		while(levi != desni){
			if(broj % 2 == 0){
				maxi2 -= a[kombinacija[levi]];
				levi++;
			}
			else{
				maxi2 -= a[kombinacija[desni]];
				desni--;
			}
			broj /= 2;
		}
		maxi = max(maxi, maxi2);
	}
	maxi = max(maxi, maxi2);
	return maxi;
}

void SveKombinacije(vector<int>& kombinacija, int i, int n, long long a[]){
	int duzina = kombinacija.size();
	if(i == duzina){
		resenje.pb(maksimalna(kombinacija, a));
		return;
	}
	int pocetak, kraj;
	if(i == 0){
		pocetak = 0;
	}
	else{
		pocetak = kombinacija[i-1]+1;
	}
	kraj = n + i - duzina + 1;
	for(int j=pocetak; j<kraj; j++){
		kombinacija[i] = j;
		SveKombinacije(kombinacija, i + 1, n, a);
	}
}

int main(){
	IOS;
	int n, k;
	cin >> n >> k;
	vector<int> kombinacija(k);
	long long a[200001];
	for(int i=0; i<n; i++){
		cin >> a[i];
	}
	if(n <= 10){
		SveKombinacije(kombinacija, 0, n, a);
		long long rez;
		rez = resenje[0];
		for(int i=0; i<resenje.size(); i++){
			rez = max(resenje[i], rez);
		}
		cout << rez;
	}
	else if(n == k){
		int maksimalno = 0;
		maksimalno = max((a[n - 1] - a[0]), (a[0] - a[n - 1]));
		for(int i=1; i<n-1; i++){
			maksimalno += abs(a[i]);
		}
		cout << maksimalno;
	}
	else{
		cout << "20000000000";
	}
	
	return 0;
}