#include #define rep(i,n) for(int i=0;i<(int)(n);i++) #define rrep(i,n) for(int i=(int)(n-1);i>=0;i--) #define FOR(i,n,m) for(int i=n;i<=(int)(m);i++) #define RFOR(i,n,m) for(int i=(int)(n);i>=m;i--) #define all(x) (x).begin(),(x).end() #define sz(x) int(x.size()) typedef long long ll; const int INF = 1e9; const int MOD = 1e9+7; const ll LINF = 1e18; const double PI=3.14159265358979323846; using namespace std; vector dy={1,0,-1,0}; vector dx={0,1,0,-1}; template vector make_vec(size_t a){ return vector(a); } template auto make_vec(size_t a, Ts... ts){ return vector(ts...))>(a, make_vec(ts...)); } int main() { int n,m,k; cin>>n>>m>>k; auto vec=make_vec (10,m); rep(i,n) rep(j,m) cin>>vec[i][j]; rep(i,10-n) rep(j,m) vec[i+n][j]=0; vector left,right; rep(a,m) rep(b,m) rep(c,m) rep(d,m) rep(e,m) { int l=vec[0][a]+vec[1][b]+vec[2][c]+vec[3][d]+vec[4][e]; if(l<=k) left.push_back(l); int r=vec[5][a]+vec[6][b]+vec[7][c]+vec[8][d]+vec[9][e]; if(r<=k) right.push_back(r); } sort(all(left)); sort(all(right)); int ans=INF; for(auto x:left) { auto itr=upper_bound(all(right),k-x); itr--; ans=min(ans,k-(x+(*itr))); } cout<<(ans==INF ? -1 : ans)<