#include <bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
using namespace std;
const int MAX=2e4+5;
const int MAXM=105;
const int INF=1<<30;
int N,M,K;
int A[MAX][MAXM];
bool dp[MAX][MAXM];
vector<int> dp0[MAX];
int ord[MAX];
bool cmp(pii a,pii b){
if (a.first==b.first) return a.second>b.second;
return a.first<b.first;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);
cin>>N>>M>>K;
for (int i=0;i<N+5;i++) dp0[i].resize(M*K+5);
for (int i=0;i<N;i++) for (int j=0;j<M;j++) cin>>A[i][j];
vector<pii> vct(N); // {v,i}
for (int i=0;i<N;i++) vct[i]={0,i};
for (int i=0;i<N;i++) for (int j=0;j<M;j++) vct[i].first+=A[i][j];
sort(vct.begin(),vct.end(),cmp);
for (int i=0;i<N;i++) ord[i]=vct[i].second;
for (int i=0;i<N;i++){
int l=vct[i].first;
int r=(i==N-1?M*K:vct[i+1].first);
//cout<<ord[i]<<' '<<l<<' '<<r<<'\n';
for (int x=l;x<=r;x++) for (int k=0;k<=M;k++) dp[x][k]=0;
dp[l][0]=1;
for (int j=0;j<M;j++) for (int k=M;k>=0;k--) for (int x=l+K-A[ord[i]][j];x<=r;x++) dp[x][k]|=dp[x-(K-A[ord[i]][j])][k-1];
/*
for (int x=l;x<=r;x++) cout<<dp[x][2]<<' ';
cout<<'\n';*/
bool f=i==0||vct[i-1].second>vct[i].second;
for (int x=l;x<=r;x++){
for (int k=0;k<=M;k++) if (dp[x][k]){
int p=x-k*K-(f?0:1);
if (p<(i==0?0:vct[i-1].first)) continue;
dp0[i+1][x]=max(dp0[i+1][x],dp0[i][p]+k);
}
dp0[i+1][x+1]=dp0[i+1][x];
}
}
cout<<N*M-dp0[N][M*K]<<'\n';
}