using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void razmeni(ref int x, ref int y)
        {
            y += x;
            x = y - x;
            y -= x;
        }
        static void sort(ref int[] a, int n)
        {
            bool biloPromene;
            do
            {
                biloPromene = false;
                for (int i = 0; i < n - 1; i++)
                    if (a[i] < a[i + 1])
                    {
                        razmeni(ref a[i], ref a[i + 1]);
                        biloPromene = true;
                    }
            }
            while (biloPromene);
        }
        static int Max(int[] a, int b)
        {
            int n = a[0];
            for (int i = 1; i < b; i++)
            {
                if (a[i] > n) n = a[i];
            }
            return n;
        }
        static int Min(int[] a, int b)
        {
            int n = a[0];
            for (int i = 1; i < b; i++)
            {
                if (a[i] < n) n = a[i];
            }
            return n;
        }
        static void Main(string[] args)
        {
            int b = 0, d = 0, mi, ma;
            string[] str = Console.ReadLine().Split();
            int N = int.Parse(str[0]);
            int K = int.Parse(str[1]);
            str = Console.ReadLine().Split();
            int[] n = new int[200000];
            int[] k = new int[200000];
            for (int i = 0; i < N; i++)
            {
                n[i] = int.Parse(str[i]);
                k[i] = n[i];
            }
            if (K == 1) Console.WriteLine(Max(n, N));
            if (K == 2) Console.WriteLine(Max(n, N) - Min(n, N));
            else
            {
                sort(ref n, N);
                for (int i = 0; i < K - 1; i++)
                {
                    b += n[i];
                }
                for (int i = 0; i < K - 1; i++)
                {
                    d -= n[N - i - 1];
                }
                if (N - K != 0)
                {
                    mi = k[N - 1];
                    for (int i = 0; i < N - K; i++)
                    {
                        if (k[N - 1 - i] <= n[N - 1 - K])
                        {
                            if (i == 0) mi = 2 * k[N - 1 - i] + n[N - K];
                            i = N - K;
                        }
                        else
                        {
                            if (mi > k[N - 1 - i])
                            {
                                mi = k[N - 1 - i];
                            }
                        }    
                    }
                    ma = k[N - 1];
                    for (int i = 0; i < N - K; i++)
                    {
                        if (k[i] <= n[N - 1 - K])
                        {
                            if (i == 0) ma = 2 * k[i] + n[N - K];
                            i = N - K;
                        }
                        else
                        {
                            if (ma > k[i])
                            {
                                ma = k[i];
                            }
                        }
                    }
                    d -= Math.Min(ma, mi);
                    mi = k[N - 1];
                    for (int i = 0; i < N - K; i++)
                    {
                        if (k[N - 1 - i] >= n[N - 1 - K])
                        {
                            if (i == 0) mi = 2 * k[N - 1 - i] + n[N - K];
                            i = N - K;
                        }
                        else
                        {
                            if (mi < k[N - 1 - i])
                            {
                                mi = k[N - 1 - i];
                            }
                        }
                    }
                    ma = k[N - 1];
                    for (int i = 0; i < N - K; i++)
                    {
                        if (k[i] >= n[N - 1 - K])
                        {
                            if (i == 0) ma = 2 * k[i] + n[N - K];
                            i = N - K;
                        }
                        else
                        {
                            if (ma < k[i])
                            {
                                ma = k[i];
                            }
                        }
                    }
                    b += Math.Min(ma, mi);
                }
                Console.WriteLine(Math.Max(d, b));
            }
        }
    }
}