#define _USE_MATH_DEFINES #include using namespace std; // repetition #define FOR(i, a, b) for (int i = (a); i < (b); ++i) #define rep(i, n) for (int i = 0; i < (int)(n); i++) // container util #define all(x) (x).begin(), (x).end() // debug #define dump(x) cerr << #x << " = " << (x) << endl; #define debug(x) \ cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" \ << " " << __FILE__ << endl; // typedef typedef long long lint; typedef unsigned long long ull; typedef complex Complex; typedef pair P; typedef tuple TP; typedef vector vec; typedef vector mat; // constant const int MOD = (int)1e9 + 7; const int INF = (int)1e18; const int dx[] = {0, 1, 0, -1}; const int dy[] = {1, 0, -1, 0}; const int ddx[] = {0, 1, 1, 1, 0, -1, -1, -1}; const int ddy[] = {1, 1, 0, -1, -1, -1, 0, 1}; // conversion inline int toInt(string s) { int v; istringstream sin(s); sin >> v; return v; } template inline string toString(T x) { ostringstream sout; sout << x; return sout.str(); } // template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } // int N, M, K; int A[11][11]; int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> N >> M >> K; rep(i, N) { rep(j, M) { cin >> A[i][j]; } sort(A[i], A[i] + M); reverse(A[i], A[i] + M); } bool ng = true; rep(j, M) { rep(i, N) { if (K - A[i][j] < 0) { if (j == 0) ng = false; continue; } K -= A[i][j]; } } if (!ng) cout << -1 << endl; else cout << K << endl; return 0; }