using System;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Collections.Generic;
using System.Linq;
class cppboljiodcs
{
    static List<int> napraviK(List<int> napicisvi, int n, int k)
    {
        List<int> napitak = new List<int>();
        if (k % 2 == 0)
        {
            for (int i = 0; i < k / 2; i++)
            {
                napitak.Add(napicisvi.Max());
                napicisvi.Remove(napicisvi.Max());
            }
            for (int i = 0; i < k / 2; i++)
            {
                napitak.Add(napicisvi.Min());
                napicisvi.Remove(napicisvi.Min());
            }
        }
        else
        {
            for (int i = 0; i < k / 2 + 1; i++)
            {
                napitak.Add(napicisvi.Max());
                napicisvi.Remove(napicisvi.Max());
            }
            for (int i = 0; i < k / 2; i++)
            {
                napitak.Add(napicisvi.Min());
                napicisvi.Remove(napicisvi.Min());
            }
        }
        return napitak;
    }
    static void Main()
    {
        string[] s = Console.ReadLine().Split();
        int n = int.Parse(s[0]);
        int k = int.Parse(s[1]);

        List<int> napitaksvi = new List<int>();

        s = Console.ReadLine().Split();
        for (int i = 0; i < n; i++)
        {
            napitaksvi.Add(int.Parse(s[i]));
        }

        List<int> napitak = napraviK(napitaksvi, n, k);

        while(napitak.Count>2)
        {
            napitak[napitak.Count-1] = napitak[napitak.Count-1] - napitak[0];
            napitak.Remove(napitak[0]);
        }

        napitak[0] = napitak[0] - napitak[1];
        Console.WriteLine(napitak[0]);
        
    }
}