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

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	const int inf = 1e9 + 1e8;
	int n, k; cin >> n >> k;
	vector<int> x(n);
	int pos = 0;
	bool flag = false;
	for (int i = 0; i < n; i++) {
		cin >> x[i];
		if (x[i - 1] < 0 && x[i] > 0) pos = i;
		if (x[i] == 0) {
			pos = i;
			k--;
			flag = true;
		}
	}
	if (x[pos] < 0) pos = n;
	if (flag) {
		for (int i = pos; i + 1 < n; i++) x[i] = x[i + 1];
		n--;
	}
	int ans = k == 0 ? 0 : inf;
	for (int i = 0; i < n; i++) {
		if (i < pos) {
			int cnt = pos - i;
			if (cnt >= k) {
				ans = min(ans, -x[i]);
			} else {
				if (k + i - 1 < n) ans = min(ans, -2 * x[i] + x[k + i - 1]);
			}
		} else {
			int cnt = i - pos + 1;
			if (cnt >= k) {
				ans = min(ans, x[i]);
			} else {
				if (i - k + 1 >= 0) ans = min(ans, 2 * x[i] - x[i - k + 1]);
			}
		}
	}
	cout << ans << endl;
	return 0;
}

#include <cstdio>
#include <cmath>
#define buf 10000
using namespace std;
int k=0;
int B[buf];
void Answer(int n);
int PrimeNumber(int n);

int main(void){
  int i,n;
  char str[buf];

  for(i=2;i<buf;i++)
    PrimeNumber(i);
  for( ;fgets(str,sizeof(str),stdin)!=NULL; ){
    sscanf(str,"%d",&n);
    if(n==0) break;
    Answer(n);
  }
  return 0;
}

void Answer(int n){
  int i,j;
  for(i=0;i<k;i++){
    if(B[i]>n)
        break;
  }
  for(j=i-1;j>=0;j--){
    if(B[j]-B[j-1]==2){
      printf("%d %d\n",B[j-1],B[j]);
      break;
    }
  }
}

int PrimeNumber(int n){
  int i,c;
  if(n==2){
    B[k]=n;
    k++; return 0;
  }
  if(n<2 || n%2==0)
    return 0;
  c=sqrt(n);
  for(i=3;i<=c;i+=2){
    if(n%i==0)
      return 0;
  }
  B[k]=n;
  k++; return 0;
}