#include <cstdio>
#include <memory.h>
#define INF 987654321
int N, K, s[2020], DT[2010][2010][3][3];
int max(int a, int b){ return a>b?a:b; }
int solve(int n, int c, int k, int can)
{
    if( k == 3 || ( n == N && ( (k + can == 3) || c < K ) ) ) return -INF;
    if( c == K ) return 0;
    if( DT[n][c][k][can] == -1 )
    {
        if( n == 1 && can )
            DT[n][c][k][can] = max( solve(n+1, c+1, k+1, can+1)+s[n], solve(n+1, c, 0, can) );
        else
            DT[n][c][k][can] = max( solve(n+1, c+1, k+1, can)+s[n], solve(n+1, c, 0, can) );
    }
    return DT[n][c][k][can];
}

int main()
{
    freopen(".20.in","r", stdin);
    freopen(".20.out","w",stdout);
    memset(DT, -1, sizeof(DT));
    scanf("%d%d",&N,&K);
    for(int i = 0 ; i < N ; i++ )
        scanf("%d", &s[i]);
    printf("%d", max( 0, max( solve(1, 0, 0, 0), solve(1, 1, 1, 1)+s[0]) ) );
}
