#include <bits/stdc++.h>

#define ll long long
#define ld long double
#define pb push_back
#define fi first
#define se second
#define en '\n'
#define sp ' '
#define tb '\t'
#define ri(n) int n; cin >> n
#define rl(n) ll n; cin >> n
#define rs(s) string s; cin >> s
#define rc(c) char c; cin >> c
#define rv(v) for (auto &x : v) cin >> x
#define pven(v) for (auto x : v) cout << x << en
#define pv(v) for (auto x : v) cout << x << sp; cout << en
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define yes cout << "YES" << en
#define no cout << "NO" << en
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
#define ssort(a, b) if (a < b) swap(a, b)
#define bitcnt(a) __builtin_popcountll(a)
#define bithigh(a) 63-__builtin_clzll(a)
#define lg bithigh
ll highpow(ll a) { return 1LL << (ll)lg(a); }

using namespace std;

const ll LINF = 4e18;
const int mxN = 1e3+10, INF = 2e9, mod = (1 ? 1e9+7 : 998244353);
ll n, m, dp[mxN][mxN];

ll Calc(const vector<ll>& a){

    for (int i = 0; i < n; i++)
        for (int j = 0; j <= n; j++)
            dp[i][j] = -LINF;
    dp[0][0] = 0;
    dp[0][1] = a[0];
    for (int i = 0; i < n-1; i++){
        for (int j = 0; j <= n; j++){
            if (dp[i][j] != -LINF){
                smax(dp[i+1][j], dp[i][j]);
                if (j < n)
                    smax(dp[i+1][j+1], dp[i][j] + a[i+1]);
            }
        }
    }
    ll ans = -LINF;
    for (int i = m-1; i < n; i++)
        smax(ans, dp[i-1][m-1] - a[i]);
    return ans;
}

void Solve2(const vector<ll>& a){

    ll sum = 0;
    for (int i = 0; i < n; i++)
        sum += a[i];
    cout << sum - 2 * min(a[0], a[n-1]) << en;
}

void Solve(){

    cin >> n >> m;
    vector<ll> a(n);
    for (int i = 0; i < n; i++)
        cin >> a[i];
    if (n == m){
        Solve2(a);
        return;
    }
    ll ans = Calc(a);
    reverse(all(a));
    smax(ans, Calc(a));
    cout << ans << en;
}

int main(){

    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0); cerr.tie(0);
    cout << setprecision(12) << fixed;
    cerr << setprecision(12) << fixed;
    cerr << "Started!" << endl;

    int t = 1;
    //cin >> t;
    while (t--)
        Solve();

    return 0;
}