#include<bits/stdc++.h>
using namespace std;

int n,m,x;
int mincost=2147483467;

int c[12];
int a[12][12];

bool can=false;

void dfs1(int,int);
void dfs2(int,int);
void dfs3(int,int);
void dfs4(int,int);
void dfs5(int,int);
void dfs6(int,int);
void dfs7(int,int);
void dfs8(int,int);
void dfs9(int,int);
void dfs10(int,int);
void dfs11(int,int);
void dfs12(int,int);

int t1;
pair<int,int> t2;
tuple<int,int,int> t3;
tuple<int,int,int,int> t4;
tuple<int,int,int,int,int> t5;
tuple<int,int,int,int,int,int> t6;
tuple<int,int,int,int,int,int,int> t7;
tuple<int,int,int,int,int,int,int,int> t8;
tuple<int,int,int,int,int,int,int,int,int> t9;
tuple<int,int,int,int,int,int,int,int,int,int> t10;
tuple<int,int,int,int,int,int,int,int,int,int,int> t11;
tuple<int,int,int,int,int,int,int,int,int,int,int,int> t12;



int main(){

    cin>>n>>m>>x;
    for(int i=0;i<n;i++){
        cin>>c[i];
        for(int j=0;j<m;j++){
            cin>>a[i][j];
        }
    }
    if(m==1) dfs1(0,0);
    if(m==2) dfs2(0,0);
    if(m==3) dfs3(0,0);
    if(m==4) dfs4(0,0);
    if(m==5) dfs5(0,0);
    if(m==6) dfs6(0,0);
    if(m==7) dfs7(0,0);
    if(m==8) dfs8(0,0);
    if(m==9) dfs9(0,0);
    if(m==10) dfs10(0,0);
    if(m==11) dfs11(0,0);
    if(m==12) dfs12(0,0);

    cout<<(can?mincost:-1)<<endl;

    return 0;
}

void dfs1(int i,int cost){

    if(i==n){
        if(t1>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs1(i+1,cost);
    t1+=a[i][0];
    dfs1(i+1,cost+c[i]);
    t1-=a[i][0];


    return;
}
void dfs2(int i,int cost){

    if(i==n){
        if(t2.first>=x&&t2.second>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs2(i+1,cost);
    t2.first+=a[i][0];t2.second+=a[i][1];
    dfs2(i+1,cost+c[i]);
    t2.first-=a[i][0];t2.second-=a[i][1];


    return;

}

void dfs3(int i,int cost){

    if(i==n){
        if(get<0>(t3)>=x&&get<1>(t3)>=x&&get<2>(t3)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs3(i+1,cost);
    get<0>(t3)+=a[i][0];get<1>(t3)+=a[i][1];get<2>(t3)+=a[i][2];
    dfs3(i+1,cost+c[i]);
    get<0>(t3)-=a[i][0];get<1>(t3)-=a[i][1];get<2>(t3)-=a[i][2];


    return;

}
void dfs4(int i,int cost){

    if(i==n){
        if(get<0>(t4)>=x&&get<1>(t4)>=x&&get<2>(t4)>=x&&get<3>(t4)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs4(i+1,cost);
    get<0>(t4)+=a[i][0];get<1>(t4)+=a[i][1];get<2>(t4)+=a[i][2];get<3>(t4)+=a[i][3];
    dfs4(i+1,cost+c[i]);
    get<0>(t4)-=a[i][0];get<1>(t4)-=a[i][1];get<2>(t4)-=a[i][2];get<3>(t4)-=a[i][3];


    return;

}
void dfs5(int i,int cost){

    if(i==n){
        if(get<0>(t5)>=x&&get<1>(t5)>=x&&get<2>(t5)>=x&&get<3>(t5)>=x
            &&get<4>(t5)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs5(i+1,cost);
    get<0>(t5)+=a[i][0];get<1>(t5)+=a[i][1];get<2>(t5)+=a[i][2];get<3>(t5)+=a[i][3];
    get<4>(t5)+=a[i][4];
    dfs5(i+1,cost+c[i]);
    get<0>(t5)-=a[i][0];get<1>(t5)-=a[i][1];get<2>(t5)-=a[i][2];get<3>(t5)-=a[i][3];
    get<4>(t5)-=a[i][4];


    return;

}

void dfs6(int i,int cost){

    if(i==n){
        if(get<0>(t6)>=x&&get<1>(t6)>=x&&get<2>(t6)>=x&&get<3>(t6)>=x
            &&get<4>(t6)>=x&&get<5>(t6)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs6(i+1,cost);
    get<0>(t6)+=a[i][0];get<1>(t6)+=a[i][1];get<2>(t6)+=a[i][2];get<3>(t6)+=a[i][3];
    get<4>(t6)+=a[i][4];get<5>(t6)+=a[i][5];
    dfs6(i+1,cost+c[i]);
    get<0>(t6)-=a[i][0];get<1>(t6)-=a[i][1];get<2>(t6)-=a[i][2];get<3>(t6)-=a[i][3];
    get<4>(t6)-=a[i][4];get<5>(t6)-=a[i][5];


    return;

}

void dfs7(int i,int cost){

    if(i==n){
        if(get<0>(t7)>=x&&get<1>(t7)>=x&&get<2>(t7)>=x&&get<3>(t7)>=x
            &&get<4>(t7)>=x&&get<5>(t7)>=x&&get<6>(t7)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs7(i+1,cost);
    get<0>(t7)+=a[i][0];get<1>(t7)+=a[i][1];get<2>(t7)+=a[i][2];get<3>(t7)+=a[i][3];
    get<4>(t7)+=a[i][4];get<5>(t7)+=a[i][5];get<6>(t7)+=a[i][6];
    dfs7(i+1,cost+c[i]);
    get<0>(t7)-=a[i][0];get<1>(t7)-=a[i][1];get<2>(t7)-=a[i][2];get<3>(t7)-=a[i][3];
    get<4>(t7)-=a[i][4];get<5>(t7)-=a[i][5];get<6>(t7)-=a[i][6];


    return;

}

void dfs8(int i,int cost){

    if(i==n){
        if(get<0>(t8)>=x&&get<1>(t8)>=x&&get<2>(t8)>=x&&get<3>(t8)>=x
            &&get<4>(t8)>=x&&get<5>(t8)>=x&&get<6>(t8)>=x&&get<7>(t8)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs8(i+1,cost);
    get<0>(t8)+=a[i][0];get<1>(t8)+=a[i][1];get<2>(t8)+=a[i][2];get<3>(t8)+=a[i][3];
    get<4>(t8)+=a[i][4];get<5>(t8)+=a[i][5];get<6>(t8)+=a[i][6];get<7>(t8)+=a[i][7];
    dfs8(i+1,cost+c[i]);
    get<0>(t8)-=a[i][0];get<1>(t8)-=a[i][1];get<2>(t8)-=a[i][2];get<3>(t8)-=a[i][3];
    get<4>(t8)-=a[i][4];get<5>(t8)-=a[i][5];get<6>(t8)-=a[i][6];get<7>(t8)-=a[i][7];


    return;

}

void dfs9(int i,int cost){

    if(i==n){
        if(get<0>(t9)>=x&&get<1>(t9)>=x&&get<2>(t9)>=x&&get<3>(t9)>=x
            &&get<4>(t9)>=x&&get<5>(t9)>=x&&get<6>(t9)>=x&&get<7>(t9)>=x
            &&get<8>(t9)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs9(i+1,cost);
    get<0>(t9)+=a[i][0];get<1>(t9)+=a[i][1];get<2>(t9)+=a[i][2];get<3>(t9)+=a[i][3];
    get<4>(t9)+=a[i][4];get<5>(t9)+=a[i][5];get<6>(t9)+=a[i][6];get<7>(t9)+=a[i][7];
    get<8>(t9)+=a[i][8];
    dfs9(i+1,cost+c[i]);
    get<0>(t9)-=a[i][0];get<1>(t9)-=a[i][1];get<2>(t9)-=a[i][2];get<3>(t9)-=a[i][3];
    get<4>(t9)-=a[i][4];get<5>(t9)-=a[i][5];get<6>(t9)-=a[i][6];get<7>(t9)-=a[i][7];
    get<8>(t9)-=a[i][8];


    return;

}

void dfs10(int i,int cost){

    if(i==n){
        if(get<0>(t10)>=x&&get<1>(t10)>=x&&get<2>(t10)>=x&&get<3>(t10)>=x
            &&get<4>(t10)>=x&&get<5>(t10)>=x&&get<6>(t10)>=x&&get<7>(t10)>=x
            &&get<8>(t10)>=x&&get<9>(t10)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs10(i+1,cost);
    get<0>(t10)+=a[i][0];get<1>(t10)+=a[i][1];get<2>(t10)+=a[i][2];get<3>(t10)+=a[i][3];
    get<4>(t10)+=a[i][4];get<5>(t10)+=a[i][5];get<6>(t10)+=a[i][6];get<7>(t10)+=a[i][7];
    get<8>(t10)+=a[i][8];get<9>(t10)+=a[i][9];
    dfs10(i+1,cost+c[i]);
    get<0>(t10)-=a[i][0];get<1>(t10)-=a[i][1];get<2>(t10)-=a[i][2];get<3>(t10)-=a[i][3];
    get<4>(t10)-=a[i][4];get<5>(t10)-=a[i][5];get<6>(t10)-=a[i][6];get<7>(t10)-=a[i][7];
    get<8>(t10)-=a[i][8];get<9>(t10)-=a[i][9];


    return;

}

void dfs11(int i,int cost){

    if(i==n){
        if(get<0>(t11)>=x&&get<1>(t11)>=x&&get<2>(t11)>=x&&get<3>(t11)>=x
            &&get<4>(t11)>=x&&get<5>(t11)>=x&&get<6>(t11)>=x&&get<7>(t11)>=x
            &&get<8>(t11)>=x&&get<9>(t11)>=x&&get<10>(t11)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs11(i+1,cost);
    get<0>(t11)+=a[i][0];get<1>(t11)+=a[i][1];get<2>(t11)+=a[i][2];get<3>(t11)+=a[i][3];
    get<4>(t11)+=a[i][4];get<5>(t11)+=a[i][5];get<6>(t11)+=a[i][6];get<7>(t11)+=a[i][7];
    get<8>(t11)+=a[i][8];get<9>(t11)+=a[i][9];get<10>(t11)+=a[i][10];
    dfs11(i+1,cost+c[i]);
    get<0>(t11)-=a[i][0];get<1>(t11)-=a[i][1];get<2>(t11)-=a[i][2];get<3>(t11)-=a[i][3];
    get<4>(t11)-=a[i][4];get<5>(t11)-=a[i][5];get<6>(t11)-=a[i][6];get<7>(t11)-=a[i][7];
    get<8>(t11)-=a[i][8];get<9>(t11)-=a[i][9];get<10>(t11)-=a[i][10];


    return;

}

void dfs12(int i,int cost){

    if(i==n){
        if(get<0>(t12)>=x&&get<1>(t12)>=x&&get<2>(t12)>=x&&get<3>(t12)>=x
            &&get<4>(t12)>=x&&get<5>(t12)>=x&&get<6>(t12)>=x&&get<7>(t12)>=x
            &&get<8>(t12)>=x&&get<9>(t12)>=x&&get<10>(t12)>=x&&get<11>(t12)>=x){
            mincost=min(mincost,cost);
            can=true;
        }
        return;
    }
    dfs12(i+1,cost);
    get<0>(t12)+=a[i][0];get<1>(t12)+=a[i][1];get<2>(t12)+=a[i][2];get<3>(t12)+=a[i][3];
    get<4>(t12)+=a[i][4];get<5>(t12)+=a[i][5];get<6>(t12)+=a[i][6];get<7>(t12)+=a[i][7];
    get<8>(t12)+=a[i][8];get<9>(t12)+=a[i][9];get<10>(t12)+=a[i][10];get<11>(t12)+=a[i][11];
    dfs12(i+1,cost+c[i]);
    get<0>(t12)-=a[i][0];get<1>(t12)-=a[i][1];get<2>(t12)-=a[i][2];get<3>(t12)-=a[i][3];
    get<4>(t12)-=a[i][4];get<5>(t12)-=a[i][5];get<6>(t12)-=a[i][6];get<7>(t12)-=a[i][7];
    get<8>(t12)-=a[i][8];get<9>(t12)-=a[i][9];get<10>(t12)-=a[i][10];get<11>(t12)-=a[i][11];


    return;

}

Measured memory_bytes: 3636