#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>usingnamespacestd;
constint N = 305 ;
int lk [N] , w [N] [N] , vis [N] ;
int n , m , mid , k ;
bool find ( int u ){
for ( int i = 1 ; i <= m ; ++ i )
if ( w [u] [i] <= mid && ! vis [i] ) {
vis [i] = 1 ;
if ( lk [i] == 0 || find ( lk [i] ) ){
lk [i] = u;
returntrue ;
}
}
returnfalse ;
}
bool check (){
int ans = 0 ;
memset ( lk, 0 , sizeof ( lk ) );
for ( int i = 1 ; i <= n ; ++ i ){
memset ( vis , 0 , sizeof ( vis ) );
ans += find ( i ) ;
}
return ans > n - k ;
}
int main() {
scanf ( "%d%d%d", &n , &m , &k );
for ( int i = 1 ; i <= n ; ++ i )
for ( int j = 1; j <= m ; ++ j )
scanf ( "%d" , &w [i] [j] );
int l = 1 , r = 1e9 , ans = 1;
while ( l <= r ) {
mid = ( l + r ) >> 1;
if ( check () ) r = mid - 1 , ans = mid ;
else l = mid + 1;
}
printf ( "%d" , l ) ;
return0 ;
}