#include<bits/stdc++.h>
#define int long long
using namespace std;
vector<pair<int,int>>pos[10];
int n,k,c;
struct info{
int cost;
int p[7];
info(){
for(int i=1;i<=k;i++)p[i]=1;
cost=g();
}
friend bool operator<(info a,info b){
return a.cost<b.cost;
}
int g(){
int ans=0;
for(int i=1;i<=k;i++){
ans+=pos[i][p[i]-1].first;
}
return ans;
}
};
int cnt[50005];
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>n>>k>>c;
for(int i=1;i<=n;i++){
for(int j=1;j<=k;j++){
int x;cin>>x;
pos[j].push_back({x,i});
}
}
for(int i=1;i<=k;i++){
sort(pos[i].begin(),pos[i].end());
reverse(pos[i].begin(),pos[i].end());
}
info st=info();
priority_queue<info>pq;
pq.push(st);
int cur=0;
int ans=0;
//cerr<<"work\n";
while(!pq.empty()&&cur<c){
auto x=pq.top();
pq.pop();
ans=x.cost;
int can=1;
for(int i=1;i<=k;i++){
cnt[pos[i][x.p[i]].second]++;
if(cnt[pos[i][x.p[i]].second]>1)can=0;
}
for(int i=1;i<=k;i++){
cnt[pos[i][x.p[i]].second]--;
}
cur+=can;
for(int i=1;i<=k;i++){
//cerr<<"i:"<<i<<'\n';
auto temp=x;
//cerr<<"ii:"<<temp.p[i]<<'\n';
if(temp.p[i]<=n){
temp.p[i]++;
temp.cost=temp.g();
pq.push(temp);
}
}
}
cout<<ans;
}