/*
TASK: bus
LANG: C++
*/
#include <cstdio>

using namespace std;

const int MAXN = 1024;
const long long INF  = (1<<30);//1000000000;
const long long NOT_CALCED = -1;

long long F[MAXN][MAXN];
int p[MAXN];
int n, k;

inline int mabs(int a) {
    return a>0?a:-a;
}

inline long long mmin(long long a, long long b) {
    return a>b?b:a;
}

long long calc(int p1, int p2) {
    long long sum = 0;
    for(int i = p1; i <= p2; ++i)
        sum += mmin( mabs(p1-i), mabs(p2-i) ) * p[i];
    return sum;
}

long long f(int nn, int kk) {
    if(nn == 0) return 0;
    if( F[nn][kk] == NOT_CALCED ) {
        long long sum = INF;
        if( kk > 0 )
            for(int i = 1; i < nn; ++i)
                sum <?= f(nn-i, kk-1) + calc(nn-i, nn);
        else
            sum = calc(0, nn);
        return F[nn][sum] = sum;
    }
    return F[nn][kk];
}

int main() {

    scanf("%d %d", &n, &k);
    for(int i = 0; i < n; ++i)
        scanf("%d", &p[i]);
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < k; ++j)
            F[i][j] = NOT_CALCED;
    printf("%lld\n", f(n-1, k-2));
    return 0;
}
