fun main() {
    val (n, m, x) = readIntList()
    var min = Int.MAX_VALUE
    val arr = Array(n) { listOf<Int>() }
    repeat(n) {
        arr[it] = readIntList()
    }
    
    // buy 買うか買わないか
    fun chk(buy: BooleanArray) {
        var price = 0
        // 経験値
        val exp = IntArray(m) { 0 }
        // 目標達成したかしていないか
        val fin = BooleanArray(m) { false }
        repeat(n) {
            if(buy[it]) {
                price += arr[it][0]
                for(i in 1..m) {
                    exp[i - 1] += arr[it][i]
                    if(exp[i - 1] >= x) fin[i - 1] = true
                }
            }
        }
        if(fin.count{ it } == m) min = Math.min(min, price)
    }
    
    val buyList = BooleanArray(n) { false }
    fun create(d: Int) {
        // 本を買うか買わないかを一冊目から試す
        arrayOf(true, false).forEach{
            buyList[d] = it
            if(d + 1 == n) {
                // n冊全てに買うか買わないかを設定できたらチェック
                chk(buyList)
            } else {
                // 再帰で買うか買わないかを設定
                create(d + 1)
            }
        }
    }
    
    create(0)
    println(if(min == Int.MAX_VALUE) -1 else min)
}

fun readString() = readLine()!!
fun readInt() = readLine()!!.toInt()
fun readLong() = readLine()!!.toLong()
fun readIntList() = readLine()!!.split(" ").map(String::toInt)
fun readLongList() = readLine()!!.split(" ").map(String::toLong)