/*
TASK:bus
LANG:C
*/


#include<stdio.h>
#define maxn 256
#define maxv 1<<28

 char calc[maxn][maxn]; 

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

 int min(int a, int b){return (a<b)?a:b;}
 
 int main()
 {
  int i,j,n,k,a[maxn][maxn],p[maxn][maxn],people[maxn],g,l;

  FILE *f=fopen("1.txt","r");
  i=1;
  fscanf(f,"%d",&n);
  fscanf(f,"%d",&k);
  for(i=0;i<n;i++)
   fscanf(f,"%d",&people[i]);

    
  for(i=0;i<n;i++)p[i][0]=0;
  for(i=1;i<=n;i++)
  {
   for(j=1;j<=n;j++)
    p[i][j]=p[i][j-1]+abs(j-i)*people[j-1];   
  }   
  
  //for(i=0;i<k;i++)printf("%d ",a[0][i]);
   
  for(i=0;i<n;i++)
   for(j=0;j<k;j++)
    a[i][j]=min(p[n][n]-p[n][i],p[1][i+1]); 
//  for(i=0;i<n;i++)a[i][0]=p[1][i+1];  
    
  for(i=0;i<n;i++)
  {
   for(j=0;j<k;j++)
    printf("%d ",a[i][j]);
   printf("\n"); 
  }     
    
  for(i=1;i<n;i++)
   for(l=1;l<k-1;l++)
    for(j=0;j<i;j++)
     for(g=j+1;g<=i;g++)
     {
      if(!calc[g][l])a[g][l]+=a[g-1][l]; 
      if(p[g+1][i+1]-p[g+1][j+1]+a[j][l-1]<a[g][l]){
       a[g][l]=p[g+1][i+1]-p[g+1][j+1]+a[j][l-1];
       calc[g][l]=1;
       }
     }          
     
  for(i=0;i<n;i++)
  {
   for(j=0;j<k;j++)
    printf("%d ",a[i][j]);
   printf("\n"); 
  }    
  
  while(a[n-1][k-1]==0)k--;
  printf("%d\n",a[n-1][k-1]);   
  scanf("%d",&n);
  return 0;   
 }
