#include <bits/stdc++.h>

using namespace std;

struct Uklon
{
    int oIndeks;
    int vrednost;

};
int n;
bool sort1(Uklon a, Uklon b)
{
    return a.vrednost < b.vrednost;
}

bool sort2(Uklon a, Uklon b)
{
    return a.oIndeks < b.oIndeks;
}

int main()
{
    int k;
    cin>>n>>k;
    Uklon a[n];
    for(int i=0;i<n;i++)
    {
        cin>>a[i].vrednost;
        a[i].oIndeks = i;
    }
    sort(a,a+n,sort1);
    Uklon b[k];
    for(int i=1;i<k;i++)
    {
         b[i].vrednost = a[n-k+i].vrednost;
         b[i].oIndeks = a[n-k+i].oIndeks;
    }
    b[0].vrednost = a[0].vrednost;
    b[0].oIndeks = a[0].oIndeks;
    sort(b,b+k,sort2);
    deque <int> v(k);
    for(int i=0;i<k;i++) v[i] = b[i].vrednost;
    for(int i=0;i<k-2;i++)
    {
        int q = v.size()-1;
        if(v[q]<v[0])
        {
            v[q]-=v[0];
            v.pop_front();
        }
        else
        {
            v[0]-=v[q];
            v.pop_back();
        }
    }
    if(v[0]>=v[1])
    {
        v[0]-=v[1];
        v.pop_back();
    }
    if(v[1]>v[0])
    {
        v[1]-=v[0];
        v.pop_back();
    }
    cout<<v[0];

    return 0;
}