#include <bits/stdc++.h>

int main()
{
    using namespace std;
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int N , K;
    cin >> N >> K;
    int a[N];
    cin >> a[0];
    int minJ = 0;
    long long najvecaJacina = -100000;
    priority_queue<long long> NizuRacunu , NizuRacunu2;
    for(int i = 1; i < N; i++)
    { 
        cin >> a[i];
        if(a[i] < a[minJ])
            minJ = i;
    }  
       long long Zbir = 0 , MaxZbir = -123122222222;
       int  kord;
       kord = minJ;
       while(kord < K-1)
        kord++;

        //Sa Prve strane kordinate
    for(int i = kord - 1;i > -1; i--)
        { 
            Zbir += a[i];
            NizuRacunu.push(-1 * a[i]);
        }
    while(NizuRacunu.size() != K-1)
        { 
            Zbir += NizuRacunu.top();        
            NizuRacunu.pop();    
        }
        MaxZbir = Zbir - a[kord];
    for(int i = kord + 1; i < N; i++)
        { 
            if(NizuRacunu.top() * -1 < a[i-1])
                { 
                    Zbir += NizuRacunu.top();
                    Zbir += a[i - 1];
                    NizuRacunu.push(a[i-1] * -1);
                }
            if(Zbir - a[i] > MaxZbir)
                MaxZbir = Zbir - a[i];        
        }
        najvecaJacina = MaxZbir;

    //Druga strana
     Zbir = 0 , MaxZbir = -123122222222;
        kord = minJ;
    while(N - kord <= K - 1)
    {
        kord--;
    }
    for(int i = kord + 1; i < N; i++)
    { 
        Zbir += a[i];
        NizuRacunu2.push(a[i] * -1);        
    }
    while(NizuRacunu2.size() != K-1)
        { 
            Zbir += NizuRacunu2.top();        
            NizuRacunu2.pop();    
        }
        MaxZbir = Zbir - a[kord];
    for(int i= kord -1 ; i >= 0; i--)
    {
        if(NizuRacunu2.top() * -1 < a[i+1])
        { 
            Zbir += NizuRacunu2.top();
            Zbir += a[i + 1];
            NizuRacunu2.push(a[i +1] * -1);
        }
        if(Zbir - a[i] > MaxZbir)
            MaxZbir = Zbir - a[i]; 
    }
        if(najvecaJacina < MaxZbir)
            najvecaJacina = MaxZbir;

    cout << najvecaJacina;
    return 0;
}