#include <bits/stdc++.h>
using namespace std;
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cerr.tie(0); cout.tie(0);
	long long n, k;
	cin >> n >> k;
	long long niz[n];
	bool postoji = false;
	long long negativni[n];
	for(int i = 0; i < n; i++)
		negativni[i] = 0;
	for(int i = 0; i < n; i++){
		cin >> niz[i];
		if(niz[i] < 0)
			postoji = true;
		if(niz[i] < 0 && i > 0){
			negativni[i] = negativni[i - 1] + 1;
		}
		else if(niz[i] < 0 && i == 0)
			negativni[i] = 1;
		else if(i > 0)
			negativni[i] = negativni[i - 1];
	}
	/*for(int i = 0; i < n; i++)
		cout << negativni[i] << " ";
	cout << endl << endl << endl;*/
	long long res = 0, l = 0, r = n - 1;
	if(k == 2){
		long long najm = niz[0];
		long long najv = niz[0];
		for(int i = 0; i < n; i++){
			najv = max(najv, niz[i]);
			najm = min(najm, niz[i]);
		}
		cout << abs(najm - najv);
	}
	else{
		if(n == k){
			if(postoji){
				//cout << "da" << endl;
				while(l < r){
					if(r == l + 1){
						cout << abs(niz[l] - niz[r]);
						break;
					}
					else{
						long long brnegl = negativni[r - 1] - negativni[l + 1];
						long long brnegr = negativni[r - 2] - negativni[l];
						long long brneg = negativni[r] - negativni[l - 1];
						if(l == 0)
							brneg = negativni[r];
						//cout << brneg << endl;
						if(niz[r] >= 0 && niz[l] >= 0){
							if(brneg > 0){
								if(niz[r] >= niz[l]){
									niz[r] -= niz[l];
									l++;
								}
								else{
									niz[l] -= niz[r];
									r--;
								}
							}
							else{
								if(niz[r] >= niz[l]){
									niz[l] -= niz[r];
									r--;
								}
								else{
									niz[r] -= niz[l];
									l++;
								}	
							}
						}
						else if(niz[r] > 0 && niz[l] < 0){
							if(brneg > 0){
								niz[r] -= niz[l];
								l++;
							}
							else{
								niz[l] -= niz[r];
								r--;							
							}
						}
						else if(niz[r] < 0 && niz[l] > 0){
							if(brneg > 0){
								niz[l] -= niz[r];
								r--;
							}
							else{
								niz[r] -= niz[l];
								l++;
							}
						}
						else{
							//cout << "prvi " << brneg;
							if(niz[l] <= niz[r]){
								if(brneg > 0){
									niz[r] -= niz[l];
									l++;
								}
								else{
									niz[l] -= niz[r];
									r--;
								}
							}
							else{
								if(brneg > 0){
									niz[l] -= niz[r];
									r--;
								}
								else{
									niz[r] -= niz[l];
									l++;
								}
							}
						}
						/*for(int i = l; i <= r; i++)
							cout << niz[i] << " ";
						cout << endl;*/
					}
				}
			}
			else{
				while(l < r){
					if(r == l + 1){
						cout << abs(niz[l] - niz[r]);
						break;
					}
					else{
						if(niz[l] > niz[r]){
							niz[r] -= niz[l];
							l++;
						}
						else{
							niz[l] -= niz[r];
							r--;
						}
						/*for(int i = l; i <= r; i++)
							cout << niz[i] << " ";
						cout << endl;*/
					}
				}
			}
		}
	}
	return 0;
}