#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int a[101][101];
int b[101][101];
int n,K;
const int dx[]={-1,0,1},
dy[]={-1,-1,-1};
void solve(int pz)
{
for (int j=1;j<=n;j++)
{
for (int i=pz+j-1;i>=1&&i>=pz-j+1;i--)
{
b[i][j]=a[i][j];
for (int k=0;k<3;k++)
{
int ii=i+dx[k];
int jj=j+dy[k];
if (ii<1||ii>n) continue;
if (jj<1||jj>n) continue;
if (b[ii][jj]+a[i][j]>b[i][j])
b[i][j]=b[ii][jj]+a[i][j];
}
}
}
}
void reconst(int i,int j,int sum)
{
if(j==1) return ;
else
for (int k=0;k<3;k++)
{
int ii=i+dx[k];
int jj=j-1;
if (ii<1||ii>n) continue;
if (jj<1||jj>n) continue;
if(b[ii][jj]==b[i][j]-a[i][j])
{
reconst(ii,jj,sum-a[i][j]);
printf("%d ",ii);
return ;
}
}
}
int main()
{
freopen("biblica.in","r",stdin);
freopen("biblica.out","w",stdout);
scanf("%d %d",&n,&K);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
solve();
return 0;
}
/*
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int a[101][101];
int b[101][101];
int n,K;
const int dx[]={-1,0,1},
dy[]={-1,-1,-1};
void solve(int pz)
{
for (int j=1;j<=n;j++)
{
for (int i=pz+j-1;i>=1&&i>=pz-j+1;i--)
{
b[i][j]=a[i][j];
for (int k=0;k<3;k++)
{
int ii=i+dx[k];
int jj=j+dy[k];
if (ii<1||ii>n) continue;
if (jj<1||jj>n) continue;
if (b[ii][jj]+a[i][j]>b[i][j])
b[i][j]=b[ii][jj]+a[i][j];
}
}
}
}
void reconst(int i,int j,int sum)
{
if(j==1) return ;
else
for (int k=0;k<3;k++)
{
int ii=i+dx[k];
int jj=j-1;
if (ii<1||ii>n) continue;
if (jj<1||jj>n) continue;
if(b[ii][jj]==b[i][j]-a[i][j])
{
reconst(ii,jj,sum-a[i][j]);
printf("%d ",ii);
return ;
}
}
}
int main()
{
freopen("biblica.in","r",stdin);
freopen("biblica.out","w",stdout);
scanf("%d %d",&n,&K);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for (int i=1;i<=n;i++)
{
solve(i);
int max=-1,pzi=0,pzj=0;
for (int k=0;k<3;k++)
{
int ii=K+dx[k];
int jj=n;
if (ii<1||ii>n) continue;
if (jj<1||jj>n) continue;
if (b[ii][jj]>max)
{
max=b[ii][jj];
pzi=ii;
pzj=jj;
}
}
printf("%d ",max);
reconst(pzi,pzj,max);
printf("%d \n",pzi);
memset(b,0,(sizeof b));
}
return 0;
}
*/