from collections import deque N, M, K = map(int, input().split()) A = [list(map(int, input().split())) for _ in range(N)] INF = 10**18 def func(n): que = deque() que.append((0, 0)) visited = [[INF]*M for _ in range(N)] visited[0][0] = 1 if A[0][0] < n else 0 while que: h, w = que.popleft() for dh, dw in direction: nh, nw = h+dh, w+dw if 0<=nh= n and visited[h][w] < visited[nh][nw]: visited[nh][nw] = visited[h][w] que.appendleft((nh, nw)) return visited[-1][-1] left = 1 right = 10**9+1 direction = [(-1,0),(0,1),(1,0),(0,-1)] while left+1 < right: mid = (left+right)//2 if func(mid) <= K: left = mid else: right = mid print(left)