#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;
bool cmp(pair<vector<int>,int> p1, pair<vector<int>,int> p2) {
vector<int> v1 = p1.first, v2 = p2.first;
int id1 = p1.second, id2 = p2.second;
int s1=0; for(int x:v1)s1+=x;
int s2=0; for(int x:v2)s2+=x;
if(s1!=s2) {
return s1>s2;
}
else return id1<id2;
}
signed main() {
int n,m,k; cin>>n>>m>>k;
// faster execution
if(n*m>20) return 0;
vector<pair<vector<int>, int>> a(n);
for(int i=0;i<n;i++) {
vector<int> score(m);
for(int j=0;j<m;j++)cin>>score[j];
a[i]={score,i};
}
sort(a.begin(),a.end(),cmp);
int prevmin;
int ans=INT_MAX;
for(int i=0;i<(1<<(n*m));i++) {
int popcnt=0;
bool valid=true;
for(int j=0;j<n;j++) {
int mn=0,mx=0;
for(int l=0;l<m;l++) {
if(i&(1<<(j*m+l))) {
mn+=(a[j].first)[l];
mx+=(a[j].first)[l];
popcnt++;
}
else {
mx+=k;
}
}
if(j==0){
prevmin = mn;
continue;
}
if(a[j].second > a[j-1].second) {
if(mx>prevmin)valid=false;
}
else {
if(mx>=prevmin)valid=false;
}
prevmin = mn;
}
if(valid) ans=min(ans,popcnt);
/*if(i==(1<<24)-((1<<9)+(1<<11)+(1<<18)+(1<<21)) && !valid) {
for(int j=0;j<n;j++) {
for(int l=0;l<m;l++) {
if(i&(1<<(j*n+l))) {
cout<<(a[j].first)[l]<<" ";
}
else {
cout<<"? ";
}
}
cout<<"\n";
}
cout<<'\n';
}*/
}
cout<<ans;
return 0;
}