using System;
using System.Collections.Generic;

namespace Carobnjak
{
    class Program
    {
        static int izracunajMoc(List<int> niz) 
        {
            int n = niz.Count;
            if (n == 1) return niz[0];
            else 
            {
                int x = Math.Abs(niz[0] - niz[n - 1]);
                if (niz[0] > niz[n - 1])
                {
                    niz[0] = x;
                    niz.RemoveAt(n - 1);
                }
                else 
                {
                    niz[n - 1] = x;
                    niz.RemoveAt(0);
                } 
                return izracunajMoc(niz);
            }
        }

        static void kombinacije(List<int> moci, int[] podaci, int l, int d, int i, int k, ref int max) 
        {
            if(i == k) 
            {
                List<int> lista = new List<int>();
                for(int j = 0; j < k; j++) 
                {
                    lista.Add(podaci[j]);
                }
                int moc = izracunajMoc(lista);
                if (moc > max) max = moc;
                return;
            }
            for(int j = l; j <= d && d - j + 1 >= k - i; j++) 
            {
                podaci[i] = moci[j];
                kombinacije(moci, podaci, j + 1, d, i + 1, k, ref max);
            }
        }

        static int najvecaMoc(List<int> napici, int n, int k) 
        {
            if (n == k) return izracunajMoc(napici);
            int max = int.MinValue;
            int[] moci = new int[k];
            kombinacije(napici, moci, 0, n - 1, 0, k, ref max);
            return max;
        }

        static void Main(string[] args)
        {
            string[] ulaz = Console.ReadLine().Split();
            int n = int.Parse(ulaz[0]);
            int k = int.Parse(ulaz[1]);
            List<int> napici = new List<int>();
            ulaz = Console.ReadLine().Split();
            for (int i = 0; i < n; i++) napici.Add(int.Parse(ulaz[i]));
            Console.WriteLine(najvecaMoc(napici, n, k));
        }
    }
}