/*NECE raditi ni za velike N, ni za N=/=K ali ajde*/

#include <iostream>
#include <vector>

int Mesaj(std::vector<int> v, bool B){                          //Ako je B tacno, onda se presipa iz prvog u poslednji. Ako nije iz poslednjeg u prvi.
        if (v.size() == 1){
                return v[0];
        }
        if (B){
                v[v.size() - 1] = v[v.size() - 1] - v[0];
                v.erase(v.begin());
        } else {
                v[0] = v[0] - v[v.size() - 1];
                v.erase(--v.end());
        }
        int levo = Mesaj(v, false), desno = Mesaj(v, true);
        if (levo > desno){
                return levo;
        } else {
                return desno;
        }
}

int main(){
        int N, K, broj;
        std::cin >> N >> K;
        std::vector<int> v;
        for (int i = 0; i < N; i++){
                std::cin >> broj;
                v.push_back(broj);
        }

        int levo = Mesaj(v, false), desno = Mesaj(v, true);
        if (levo > desno){
                std::cout << levo;
        } else {
                std::cout << desno;
        }
        return 0;
}