#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> shelf[2001];
bool isThere(int hInd, int rInd) {
if(hInd < 0 || rInd < 0) {
return false;
}
if(rInd > hInd) {
return false;
}
return true;
}
void fillDep(int n) {
for(int i = 0; i < n; i++) {
for(int j = 0; j <= i; j++)
{
int toRem = 0;
if(isThere(i-1, j-1)) {
toRem += shelf[i-1][j-1] + 1;
}
if(isThere(i-1, j) ) {
toRem += shelf[i-1][j] + 1;
}
if(isThere(i-2, j-1) ) {
toRem -= shelf[i-2][j-1] + 1;
}
shelf[i].push_back(toRem);
}
}
}
void testFil(int n) {
for(int i = 0; i < n; i++) {
for(int j = 0; j <= i; j++) {
cout << shelf[i][j] << " ";
}
cout << "\n";
}
}
int main() {
ios_base::sync_with_stdio(0);
int n, k;
cin >> n >> k;
fillDep(n);
int kings = 2020;
for(int i=0; i<n; i++)
{
for(int j=0; j <= i; j++) {
int year;
cin >> year;
int toReach = shelf[i][j];
if(toReach < k) {
kings = min(kings, year);
}
}
}
cout << kings << "\n";
return 0;
}