output_description: If the objective is not achievable, print `-1`; otherwise, print the minimum
  amount of money needed to achieve it.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M X
      C_1 A_{1,1} A_{1,2} \cdots A_{1,M}
      C_2 A_{2,1} A_{2,2} \cdots A_{2,M}
      \vdots
      C_N A_{N,1} A_{N,2} \cdots A_{N,M}
attempt: N, M, X = input().split()
  N, M, X = int(N), int(M), int(X)
  
  
  C = []
  A = []
  for i in range(N):
      a = [int(x) for x in input().split()]
      C.append(a[0])
      A.append(a[1:])
  
  
  #
  def combination(list_, length):
      # print(list_, length)
      if length == 2:
          list_com = [[list_[0], list_[1]], [list_[1], list_[0]]]
          return list_com
      else:
          list_com = []
          for i in range(length):
              out_i = [list_[j] for j in range(length) if i != j]
              list_com_i = combination(out_i, len(out_i))
  
              for j in range(len(list_com_i)):
                  list_c = [list_[i]]
                  list_c.extend(list_com_i[j])
                  list_com.append(list_c)
          return list_com
  
  
  num = [i for i in range(N)]
  all_com = combination(num, N)
  # print(N,num,all_com)
  
  cost_min = 10000000
  for combi in all_com:
      # print(combi)
      cost = 0
      skil = [0 for j in range(M)]
      clear = M
  
      for j in range(N):  # len(combi)=N
          if clear != 0:
              cost += C[combi[j]]
              clear = M
              for k in range(M):
                  skil[k] += A[combi[j]][k]
                  # check
                  if skil[k] >= X:
                      clear = clear - 1
      # print(cost)
      if clear == 0:
          if cost < cost_min:
              cost_min = cost
  
  if cost_min == 10000000:
      cost_min = -1
  
  # for i in range(N):
  # print(C[i], A[i])
  print(cost_min)
  
problem_description: Takahashi, who is a novice in competitive programming, wants to learn M
  algorithms. Initially, his _understanding level_ of each of the M algorithms
  is 0.
  
  Takahashi is visiting a bookstore, where he finds N books on algorithms. The
  i-th book (1\leq i\leq N) is sold for C_i yen (the currency of Japan). If he
  buys and reads it, his understanding level of the j-th algorithm will increase
  by A_{i,j} for each j (1\leq j\leq M). There is no other way to increase the
  understanding levels of the algorithms.
  
  Takahashi's objective is to make his understanding levels of all the M
  algorithms X or higher. Determine whether this objective is achievable. If it
  is achievable, find the minimum amount of money needed to achieve it.
samples: [{"input": "3 3 10\n    60 2 2 4\n    70 8 7 9\n    50 2 3 9", "output": "120\n    \n\nBuying the second and third books makes his understanding levels of all the\nalgorithms 10 or higher, at the minimum cost possible.\n\n* * *"}, {"input": "3 3 10\n    100 3 1 4\n    100 1 5 9\n    100 2 6 5", "output": "-1\n    \n\nBuying all the books is still not enough to make his understanding levels of\nall the algorithms 10 or higher.\n\n* * *"}, {"input": "8 5 22\n    100 3 7 5 3 1\n    164 4 5 2 7 8\n    334 7 2 7 2 9\n    234 4 7 2 8 2\n    541 5 4 3 3 6\n    235 4 8 6 9 7\n    394 3 6 1 6 2\n    872 8 4 3 7 2", "output": "1067"}]