import sys



readline = sys.stdin.readline

MOD = 10 ** 9 + 7

INF = float('INF')

sys.setrecursionlimit(10 ** 5)





def main():

    n, m, x = list(map(int, readline().split()))

    c = []

    a = []

    for i in range(n):

        temp = list(map(int, readline().split()))

        ctemp = temp[0]

        atemp = temp[1:]

        c.append(ctemp)

        a.append(atemp)



    ans = INF

    for bit in range(1 << n):

        money = 0

        learn = [0] * m

        for i in range(n):

            if bit >> i & 1:

                money += c[i]

                for j, le in enumerate(a[i]):

                    learn[j] += le



        ok = True

        for j in range(m):

            if learn[j] < x:

                ok = False



        if ok:

            ans = min(ans, money)



    if ans == INF:

        ans = -1



    print(ans)





if __name__ == '__main__':

    main()

def check(learn_total):

    for i in range(m):

        if learn_total[i] < x:

            return False

    return True





def calc_price(bit):

    price_total = 0  # 値段の合計

    learn_total = [0] * m  # 理解度



    for i in range(n):

        if (bit >> i) & 1:  # i桁目が0か1か見て、i番目を買うか買わないか判定します

            price_total += c[i]  # 買うので、i番目の値段を加算します

            learn = a[i]  # 「i番目の参考書を読んで増える、各アルゴリズムの理解度」のリストです

            for j, le in enumerate(learn):  # 理解度を足します。 enumerateを使うと、range(n)よりスマートです

                learn_total[j] += le



    # 条件を満たすか、check関数で確認します

    if check(learn_total):

        return price_total

    else:

        return INF





if __name__ == '__main__':

    INF = float("inf")



    n, m, x = list(map(int, input().split()))



    # 空のリストを作って、appendで追加していきます

    c = []  # 参考書の値段です

    a = []  # 各参考書に入る理解度です



    for i in range(n):

        c_temp, *a_temp = list(map(int, input().split()))  # こうすると、2つ目以降をリストで受け取れます

        c.append(c_temp)

        a.append(a_temp)



    ans = INF



    for bit in range(1 << n):

        price = calc_price(bit)  # 条件を満たすなら価格、満たさないならINFが返ってきます

        ans = min(ans, price)  # 答えを更新します



    if ans == INF:

        print((-1))

    else:

        print(ans)

import sys

readline = sys.stdin.readline
MOD = 10**9 + 7
INF = float("INF")
sys.setrecursionlimit(10**5)


def main():
    n, m, x = list(map(int, readline().split()))
    c = []
    a = []
    for i in range(n):
        temp = list(map(int, readline().split()))
        ctemp = temp[0]
        atemp = temp[1:]
        c.append(ctemp)
        a.append(atemp)
    ans = INF
    for bit in range(1 << n):
        money = 0
        learn = [0] * m
        for i in range(n):
            if bit >> i & 1:
                money += c[i]
                for j, le in enumerate(a[i]):
                    learn[j] += le
        ok = True
        for j in range(m):
            if learn[j] < x:
                ok = False
        if ok:
            ans = min(ans, money)
    if ans == INF:
        ans = -1
    print(ans)


if __name__ == "__main__":
    main()

def check(learn_total):
    for i in range(m):
        if learn_total[i] < x:
            return False
    return True


def calc_price(bit):
    price_total = 0  # 値段の合計
    learn_total = [0] * m  # 理解度
    for i in range(n):
        if (bit >> i) & 1:  # i桁目が0か1か見て、i番目を買うか買わないか判定します
            price_total += c[i]  # 買うので、i番目の値段を加算します
            learn = a[i]  # 「i番目の参考書を読んで増える、各アルゴリズムの理解度」のリストです
            for j, le in enumerate(learn):  # 理解度を足します。 enumerateを使うと、range(n)よりスマートです
                learn_total[j] += le
    # 条件を満たすか、check関数で確認します
    if check(learn_total):
        return price_total
    else:
        return INF


if __name__ == "__main__":
    INF = float("inf")
    n, m, x = list(map(int, input().split()))
    # 空のリストを作って、appendで追加していきます
    c = []  # 参考書の値段です
    a = []  # 各参考書に入る理解度です
    for i in range(n):
        c_temp, *a_temp = list(map(int, input().split()))  # こうすると、2つ目以降をリストで受け取れます
        c.append(c_temp)
        a.append(a_temp)
    ans = INF
    for bit in range(1 << n):
        price = calc_price(bit)  # 条件を満たすなら価格、満たさないならINFが返ってきます
        ans = min(ans, price)  # 答えを更新します
    if ans == INF:
        print((-1))
    else:
        print(ans)

-import sys - -readline = sys.stdin.readline -MOD = 10**9 + 7 -INF = float("INF") -sys.setrecursionlimit(10**5) +def check(learn_total): +    for i in range(m): +        if learn_total[i] < x: +            return False +    return True -def main(): -    n, m, x = list(map(int, readline().split())) -    c = [] -    a = [] +def calc_price(bit): +    price_total = 0  # 値段の合計 +    learn_total = [0] * m  # 理解度 -        temp = list(map(int, readline().split())) -        ctemp = temp[0] -        atemp = temp[1:] -        c.append(ctemp) -        a.append(atemp) -    ans = INF -    for bit in range(1 << n): -        money = 0 -        learn = [0] * m -        for i in range(n): -            if bit >> i & 1: -                money += c[i] -                for j, le in enumerate(a[i]): -                    learn[j] += le -        ok = True -        for j in range(m): -            if learn[j] < x: -                ok = False -        if ok: -            ans = min(ans, money) -    if ans == INF: -        ans = -1 -    print(ans) +        if (bit >> i) & 1:  # i桁目が0か1か見て、i番目を買うか買わないか判定します +            price_total += c[i]  # 買うので、i番目の値段を加算します +            learn = a[i]  # 「i番目の参考書を読んで増える、各アルゴリズムの理解度」のリストです +            for j, le in enumerate(learn):  # 理解度を足します。 enumerateを使うと、range(n)よりスマートです +                learn_total[j] += le +    # 条件を満たすか、check関数で確認します +    if check(learn_total): +        return price_total +    else: +        return INF -    main() +    INF = float("inf") +    n, m, x = list(map(int, input().split())) +    # 空のリストを作って、appendで追加していきます +    c = []  # 参考書の値段です +    a = []  # 各参考書に入る理解度です +    for i in range(n): +        c_temp, *a_temp = list(map(int, input().split()))  # こうすると、2つ目以降をリストで受け取れます +        c.append(c_temp) +        a.append(a_temp) +    ans = INF +    for bit in range(1 << n): +        price = calc_price(bit)  # 条件を満たすなら価格、満たさないならINFが返ってきます +        ans = min(ans, price)  # 答えを更新します +    if ans == INF: +        print((-1)) +    else: +        print(ans)