#include <stdio.h>
#include <stdlib.h>
#define MAX(a,b) a>b?a:b
int a[100];
int dp[1000][1000];
int main()
{
int i,j,k;
int n,m;
scanf("%d %d",&n,&m);
for( i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for( i=1;i<=n;i++)//分为一段
{
dp[i][1]=dp[i-1][1]+a[i];
}
for( i=1;i<=n;i++)
{
for( j=2;j<=m;j++)
{
int minvalue=99999;
for( k=1;k<i;k++){
int temp=MAX(dp[i][1]-dp[k][1],dp[k][j-1]);//前i个数减去前k个数分成一段
if(temp<minvalue)
{
minvalue=temp;
}
}
dp[i][j]=minvalue;
}
}
for(i=0;i<=n;i++)
{
for(j=0;j<=m;j++)
{
printf("%d ",dp[i][j]);
}
printf("\n");
}
printf("%d\n",dp[n][m]);
return 0;
}