#include <algorithm>
#include <stdio.h>
#define MAXN 2048
#define K3DBG(X)
int ile_na_wierzchu[MAXN][MAXN];
int roczniki[MAXN][MAXN];
int min_required_for_rocznik[MAXN];
int ile(int r, int i, int n) {
if (r <= 0) {
return 0;
}
if (i < 0) return 0;
if (i >= n) return 0;
return ile_na_wierzchu[r][i];
}
void calculate(int n, int k)
{
ile_na_wierzchu[0][0] = 0;
min_required_for_rocznik[roczniki[0][0]] = 1;
for (int r=1; r < n; r++) {
for (int i=0; i < r+1; i++) {
int b1 = ile(r-1, i-1,n);
int b2 = ile(r-1, i,n);
int sameB = ile(r-2, i-1, n) + ((r>=2) ? 1 : 0);
int ileNad = 1 + ((i>0 && i<r) ? 1 : 0);
ile_na_wierzchu[r][i] = ileNad + b1 + b2 - ((b1 > 0 && b2 > 0) ? sameB : 0);
K3DBG(printf("(%d, %d) b1=%d, b2=%d, sameB=%d, res=%d\n", r,i,b1,b2,sameB, ile_na_wierzchu[r][i]));
int processedR = roczniki[r][i];
min_required_for_rocznik[processedR] = std::min(min_required_for_rocznik[processedR], ile_na_wierzchu[r][i] + 1);
}
K3DBG(printf("\n"));
}
}
int main() {
for (int i=0; i < MAXN; i++) {
min_required_for_rocznik[i] = 1000000000;
}
int n,k;
scanf("%d%d", &n, &k);
for (int r=0; r < n; r++) {
for (int i=0; i < r+1; i++) {
scanf("%d", &roczniki[r][i]);
}
}
calculate(n,k);
for (int i=0; i < MAXN; i++) {
if (min_required_for_rocznik[i] < 100000000) {
K3DBG(printf("rocznik: %d required: %d\n", i, min_required_for_rocznik[i]));
}
if (min_required_for_rocznik[i] <= k) {
printf("%d\n", i);
break;
}
}
return 0;
}