#include <bits/stdc++.h>
using namespace std;
#define MAXN 601
#define MAXK 101
int n, k;
int a[MAXN][MAXN], b[MAXN][MAXN], c[MAXN][MAXN];
int f[MAXN][MAXK], last[MAXN][MAXK];
stack<int> st;
void print(int k, int p) {
if (!k) return;
print(k-1, last[k][p]);
cout << p << " ";
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
for (int i=1; i<=n; i++) {
for (int j=i+1; j<=n; j++) cin >> a[i][j];
for (int j=n; j>i; j--) b[i][j] = b[i][j+1] + a[i][j];
}
for (int j=n-1; j>=1; j--){
for (int i=j; i>=1; i--) c[i][j] = c[i+1][j] + b[i][j+1];
}
memset(f, -0x3f, sizeof(f));
f[0][0] = 0;
for (int i=1; i<=k+1; i++){
for (int j=1; j<=n; j++){
for (int p=0; p<j; p++){
if (f[i-1][p] + c[p+1][j] > f[i][j]){
f[i][j] = f[i-1][p] + c[p+1][j];
last[i][j] = p;
}
}
}
}
print(k, last[k+1][n]);
return 0;
}