/*
  Autor: Slobodan Mitrovic
*/
#include <iostream>
#include <cstdio>
#include <fstream>
#include <vector>
#include <cmath>
#include <time.h>
#define ffor(_a,_f,_t) for(int _a=(_f),__t=(_t);_a<__t;_a++)
#define all(_v) (_v).begin() , (_v).end()
#define sz size()
#define pb push_back
#define SET(__set, val) memset(__set, val, sizeof(__set))
#define FOR(__i, __n) ffor (__i, 0, __n)

using namespace std;

const int MAXN = 500000;

int mmax[MAXN], mmin[MAXN], a[MAXN];

int main(){
  FILE *fin;
  FILE *fout;
  fin = fopen("sumarum.in", "r");
  fout = fopen("sumarum.out", "w");
    
  int n, k;
  fscanf(fin, "%d %d", &n, &k);
  FOR (i, n)
    fscanf(fin, "%d", &a[i]);
  
  mmax[n - 1] = a[n - 1];
  for (int i = n - 2; i > -1; i--)
    mmax[i] = max(a[i], mmax[i + 1]);
    
  
  mmin[0] = a[0];
  ffor (i, 1, n)
    mmin[i] = min(a[i], mmin[i - 1]);
      
  int idxLeft = 0, idxRight = n - k - 1, ret = -(1 << 30);
  FOR (i, k + 1){
    ret = max(ret, mmax[idxRight] - mmin[idxLeft]);
    idxLeft++;
    idxRight++;
  }
  
  fprintf(fout, "%d\n", ret);
  fclose(fin);
  fclose(fout);
  return 0;
}
