N,M,K=map(int,input().split())\ # A=sorted(A,key=lambda x: x[1]) # A=sorted(A,key=lambda x: x[0]) C=[] for i in range(N): A=list(map(int, input().split())) C.append(A) ok,ng=1,10**9+1 from collections import deque d=deque() while (ng-ok)>1: mid=(ok+ng)//2 dp=[[10**10]*M for _ in range(N)] if C[0][0]>=mid: dp[0][0]=0 else: dp[0][0]=1 d.append((0,0,dp[0][0])) dx,dy=[0,0,1,-1],[1,-1,0,0] while d: x,y,s=d.popleft() if dp[x][y]!=s: continue for i in range(4): nx,ny=x+dx[i],y+dy[i] if 0<=nxns: dp[nx][ny]=ns if s==ns: d.appendleft((nx,ny,ns)) else: d.append((nx,ny,ns)) if dp[-1][-1]<=K: ok=mid else: ng=mid print(ok)