#include <iostream>
using namespace std;
#define get(a,i) (i<0?0:a[i])
int n, m, k;
int *list;
int minnum=-1;
int *lastnlist;
int *lastmlist;
void run(int maxn,int maxlevel,int level,int*arr);
void run(int maxn,int maxlevel,int level,int*arr){
if(level>=maxlevel){
int bclist[n];
for(int index=0;index<maxlevel;index++){
int i=(arr[index]-1)/m,j=(arr[index]-1)%m;
bclist[index]=list[i*m+j];
}
bool then;
do{
then=false;
for(int i=0;i<n-1;i++){
int t=bclist[i];
if(t<bclist[i+1]){
then=true;
bclist[i]=bclist[i+1];
bclist[i+1]=t;
}
}
}while(then);
if(minnum==-1||bclist[k-1]<minnum)minnum=bclist[k-1];
}else{
for(int i=get(arr,level-1)+1;i<=maxn;i++){
arr[level]=i;
int i_=(i-1)/m,j_=(i-1)%m;
bool exit=false;
for(int index_=0;index_<level;index_++){
if(i_==lastnlist[index_])exit=true;
if(j_==lastmlist[index_])exit=true;
}
if(exit)continue;
lastnlist[level]=i_;
lastmlist[level]=j_;
run(maxn,maxlevel,level+1,arr);
}
}
}
int main() {
cin >> n >> m >> k;
list=new int[n*m];
for(int i=0;i<m*n;i++){
cin>>list[i];
}
int*a=new int[m*n];
for(int i=0;i<m*n;i++){
a[i]=0;
}
lastnlist=new int[n];
lastmlist=new int[n];
run(m*n,n,0,a);
cout<<minnum<<endl;
return 0;
}