/*
TASK:bus
LANG:C
*/
#include <stdio.h>
#define INF 4e9
#define min(a, b) ((a)<(b)?(a):(b))
int N, k;
int spot[1005];
int stop[1005];
int A4M[1005];


main()
{
   int i;
   scanf("%d %d", &N, &k);
   for(i=0; i<N; i++)
      scanf("%d", &spot[i]);

   for(i=0; i<N; i++)
      stop[i]=0;
   stop[0]=stop[N-1]=1;
   SetStop(0, N-1, k-2);
   printf("%d\n", countA4M(0, N-1));
   return 0;
}

SetStop(int st, int en, int n)
{
   int sum = count24M(st, en), subsum=0, mind=INF, i, s;
   if(n==1) 
      return set1stop(st, en);
   for(i=st+1; i<en; i++)
   {
      subsum+=A4M[i];
      if(mind < abs(sum/n - subsum))
         break;
      mind = abs(sum/n - subsum);
   }
   s = set1stop(st, i);
   return SetStop(s, en, n-1);
}
   
int set1stop(st, en)
{
   int i, j, ret=0, min=INF, s=0;
   for(i=1; i<en-st; i++, ret=0)
   {
      for(j=1; j<en-st; j++)
         ret+= (i-j>j?j:abs(i-j))*spot[j+st];
      if(min>ret)
      {
         min=ret;
         s=i+st;
      }
   }
   stop[s]=1;
   return s;
}

int count24M(st, en)
{
   int i, ret=0;
   for(i=st+1; i<en; i++)
      ret+= (A4M[i] = spot[i]*min(i-st, en-i));
   return ret;
}

int countA4M(st, en)
{
   int i;
   for(i=st+1; i<en; i++)
      if(stop[i])
         return count24M(st, i)+countA4M(i, en);
   return count24M(st, en);
}
