#include "bits/stdc++.h"
using namespace std;
typedef long long int lint;
typedef pair<lint, lint> plint;
typedef pair<double long, double long> pld;
#define ALL(x) (x).begin(), (x).end()
#define SZ(x) ((lint)(x).size())
#define POW2(n) (1LL << (n))
#define FOR(i, begin, end) for(lint i=(begin),i##_end_=(end);i<i##_end_;i++)
#define IFOR(i, begin, end) for(lint i=(end)-1,i##_begin_=(begin);i>=i##_begin_;i--)
#define REP(i, n) FOR(i,0,n)
#define IREP(i, n) IFOR(i,0,n)
template<class T>bool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; }
template<typename T1, typename T2> pair<T1, T2> operator+(const pair<T1, T2>& l, const pair<T1, T2>& r) { return make_pair(l.first + r.first, l.second + r.second); }
template<typename T1, typename T2> pair<T1, T2> operator-(const pair<T1, T2>& l, const pair<T1, T2>& r) { return make_pair(l.first - r.first, l.second - r.second); }
const lint MOD = 1e9 + 7, INF = 1e18;

lint N, M, X;
lint C[12];
lint arr[12][12];
int main() {
	cin.tie(0); ios_base::sync_with_stdio(false);
	cin >> N >> M >> X;
	REP(i, N) {
		cin >> C[i];
		REP(j, M) {
			cin >> arr[i][j];
		}
	}

	lint minv = INF;
	REP(i, 1 << N) {
		lint score[12];
		lint cost = 0;
		REP(j, M) score[j] = 0;
		REP(j, N) {
			if ((i >> j) % 2 == 1) {
				REP(k, M) {
					score[k] += arr[j][k];
				}
				cost += C[j];
			}
		}

		bool flag = true;
		REP(j, M) {
			flag &= (score[j] >= X);
		}
		if (flag) chmin(minv, cost);
	}
	if (minv == INF) cout << -1 << endl;
	else cout << minv << endl;
}
