from collections import defaultdict import bisect def judge(A, B): for i in range(len(A)): if A[i] > B[i]: return A elif B[i] > A[i]: return B return A N, M, K = map(int, input().split()) A = [list(map(int, input().split())) for i in range(N)] dp = [[list()] * N for i in range(N)] dp[0][0].append(A[0][0]) for i in range(1, N): dp[i][0] = dp[i - 1][0][:] dp[i][0].append(A[i][0]) dp[i][0].sort() dp[0][i] = dp[0][i - 1][:] dp[0][i].append(A[0][i]) dp[0][i].sort() for i in range(1, N): for j in range(1, N): arr = judge(dp[i][j - 1], dp[i - 1][j]) dp[i][j] = arr[:] dp[i][j].append(A[i][j]) dp[i][j].sort() if len(dp[-1][-1]) <= K: print(10 ** 9) else: print(dp[-1][-1][K])