#pragma GCC optimize("O3")
            #pragma comment(linker, "/stack:200000000")
            #pragma GCC optimize("unroll-loops")
             
            #include <algorithm>
            #include <bitset>
            #include <cassert>
            #include <chrono>
            #include <cmath>
            #include <complex>
            #include <cstdio>
            #include <cstdlib>
            #include <cstring>
            #include <ctime>
            #include <deque>
            #include <functional>
            #include <iomanip>
            #include <iostream>
            #include <iterator>
            #include <limits>
            #include <climits>
            #include <list>
            #include <map>
            #include <numeric>
            #include <queue>
            #include <random>
            #include <ratio>
            #include <set>
            #include <sstream>
            #include <stack>
            #include <string>
            #include <unordered_map>
            #include <unordered_set>
            #include <utility>
            #include <vector>
            using namespace std;
             
            typedef long long ll;
            typedef long double ld;
            #define int ll
            #define double ld
            #define pb push_back
            #define mp make_pair
            #define REP(i,n) for (int i = 0; i < n; i++)
            #define loop(i,n) for (int i = 0; i < n; i++)
            #define FOR(i,a,b) for (int i = a; i < b; i++)
            #define REPD(i,n) for (int i = n-1; i >= 0; i--)
            #define FORD(i,a,b) for (int i = a; i >= b; i--)
            #define remax(a,b) a = max(a,b)
            #define remin(a,b) a = min(a,b)
            #define mem(a, b) memset(a, b, sizeof a)
            #define append push_back
            #define all(v) v.begin(),v.end()
            #define F first
            #define S second
            #define print(x) cout << (x) << endl
            #define PRECISION(x) cout << fixed << setprecision(x)
            #define FAST_IO ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
            #define N 300005
            const double PI=acos(-1);
            const int MOD = 1000000007;
            const int FMOD = 998244353;
            const double eps = 1e-9;
             
            mt19937 RNG(chrono::steady_clock::now().time_since_epoch().count()); 
            
            int n,m,x;
            int a[20][20];
            int ans=INT_MAX;
            int cost=0,sum[20];
            map<int,int> res;
            void solve1()
            {
                cost=0;
                for(int i=0;i<m+1;i++)
                {
                    sum[i]=0;
                }
            	for(int i=0;i<n;i++)
            	{
            		if(res[i])
            		{
            			for(int j=1;j<m+1;j++)
            			{
            				sum[j]+=a[i][j];
						}
						cost+=a[i][0];
					}
				}
				for(int i=1;i<m+1;i++)
				{
					if(sum[i]<x)
					{
						return;
					}
				}
				ans=min(ans,cost);
			}
            void solve()
            {
            	for(int i=1;i<(1<<n);i++)
            	{
            		int p=i;
            		int cnt=0;
            		res.clear();
            		while(p)
            		{
            			if(p&1)
            			{
            				res[cnt]=1;
						}
						cnt++;
						p>>=1;
					}
					solve1();
				}
			}
            signed main()
            {
           
            	cin>>n>>m>>x;
            	
            
            	loop(i,n)
            	{
            		loop(j,m+1)
            		cin>>a[i][j];
				}
				solve();
				if(ans==INT_MAX)
				cout<<-1;
				else
				cout<<ans;
			}

Measured memory_bytes: 3652