/*
TASK: bus
LANG: C++
*/

#include <iostream>
#include <cstdio>
#include <fstream>
#include <vector>
#include <cstdlib>
#define MAX 1024
#define out cout
#define in cin

using namespace std;

//ifstream in; ofstream out;
int n, m;
long long a[MAX];
long long dyn[MAX][MAX];


long long recurse(int pos, int rem)
{
long long i, c;
long long sum, cur, ans;

if (pos >= n-2) return 0;
if (dyn[pos][rem] != -1) return dyn[pos][rem];

ans = (long long)1000000*(long long)1000000;


if (rem == 0)
   {
   sum = 0;
   for (c=pos+1; c<n; c++)
       {
       if (c-pos <= n-1-c) sum += a[c] * (c-pos);
       else sum += a[c] * (n-c-1);
       }
   ans = sum;
   }
else
   {
   for (i=pos+1; i<n; i++)
       {
       sum = 0;
       for (c=pos+1; c<i; c++)
           {
           if (c-pos <= i-c) sum += a[c] * (c-pos);
           else sum += a[c] * (i-c);
           }
       cur = recurse(i, rem-1) + sum;
       if (cur < ans) ans = cur;
       }
   }

dyn[pos][rem] = ans;
return ans;
}


int main(void)
{
int i, c;

memset(a, 0, sizeof(a));
memset(dyn, -1, sizeof(dyn));

//in.open("bus.in"); out.open("bus.out");

in >> n >> m;
for (i=0; i<n; i++) in >> a[i];

out << recurse(0, m-2) << endl;

//system("pause");

return 0;
}
