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: import numpy as np
  
  n, m, x = map(int, input().split())
  all = []
  cost = []
  result = []
  for i in range(n):
      tmp = list(map(int, input().split()))
      all.append(tmp[1:])
      cost.append(tmp[0])
  # print(cost)
  # print(all)
  for i1 in range(m):
      for i2 in range(i1 + 1, n):
          sum = np.array(all[i1]) + np.array(all[i2])
          flag = True
          for i in sum:
              if i < x:
                  flag = False
          if flag:
              result.append(cost[i1] + cost[i2])
  
  # 3
  for i1 in range(n):
      for i2 in range(i1 + 1, n):
          for i3 in range(i2 + 1, n):
              sum = np.array(all[i1]) + np.array(all[i2]) + np.array(all[i3])
              flag = True
              for i in sum:
                  if i < x:
                      flag = False
              if flag:
                  result.append(cost[i1] + cost[i2] + cost[i3])
  # 4
  for i1 in range(m):
      for i2 in range(i1 + 1, n):
          for i3 in range(i2 + 1, n):
              for i4 in range(i3 + 1, n):
                  sum = (
                      np.array(all[i1])
                      + np.array(all[i2])
                      + np.array(all[i3])
                      + np.array(all[i4])
                  )
                  flag = True
                  for i in sum:
                      if i < x:
                          flag = False
                  if flag:
                      result.append(cost[i1] + cost[i2] + cost[i3] + cost[i4])
  for i1 in range(m):
      for i2 in range(i1 + 1, n):
          for i3 in range(i2 + 1, n):
              for i4 in range(i3 + 1, n):
                  for i5 in range(i4 + 1, n):
                      sum = (
                          np.array(all[i1])
                          + np.array(all[i2])
                          + np.array(all[i3])
                          + np.array(all[i4])
                          + np.array(all[i5])
                      )
                      flag = True
                      for i in sum:
                          if i < x:
                              flag = False
                      if flag:
                          result.append(
                              cost[i1] + cost[i2] + cost[i3] + cost[i4] + cost[i5]
                          )
  for i1 in range(m):
      for i2 in range(i1 + 1, n):
          for i3 in range(i2 + 1, n):
              for i4 in range(i3 + 1, n):
                  for i5 in range(i4 + 1, n):
                      for i6 in range(i5 + 1, n):
  
                          sum = (
                              np.array(all[i1])
                              + np.array(all[i2])
                              + np.array(all[i3])
                              + np.array(all[i4])
                              + np.array(all[i5])
                              + np.array(all[i6])
                          )
  
                          flag = True
                          for i in sum:
                              if i < x:
                                  flag = False
                          if flag:
                              result.append(
                                  cost[i1]
                                  + cost[i2]
                                  + cost[i3]
                                  + cost[i4]
                                  + cost[i5]
                                  + cost[i6]
                              )
  for i1 in range(m):
      for i2 in range(i1 + 1, n):
          for i3 in range(i2 + 1, n):
              for i4 in range(i3 + 1, n):
                  for i5 in range(i4 + 1, n):
                      for i6 in range(i5 + 1, n):
                          for i7 in range(i6 + 1, n):
                              sum = (
                                  np.array(all[i1])
                                  + np.array(all[i2])
                                  + np.array(all[i3])
                                  + np.array(all[i4])
                                  + np.array(all[i5])
                                  + np.array(all[i6])
                                  + np.array(all[i7])
                              )
                              flag = True
                              for i in sum:
                                  if i < x:
                                      flag = False
                              if flag:
                                  result.append(
                                      cost[i1]
                                      + cost[i2]
                                      + cost[i3]
                                      + cost[i4]
                                      + cost[i5]
                                      + cost[i6]
                                      + cost[i7]
                                  )
  
  for i1 in range(m):
      for i2 in range(i1 + 1, n):
          for i3 in range(i2 + 1, n):
              for i4 in range(i3 + 1, n):
                  for i5 in range(i4 + 1, n):
                      for i6 in range(i5 + 1, n):
                          for i7 in range(i6 + 1, n):
                              sum = (
                                  np.array(all[i1])
                                  + np.array(all[i2])
                                  + np.array(all[i3])
                                  + np.array(all[i4])
                                  + np.array(all[i5])
                                  + np.array(all[i6])
                                  + np.array(all[i7])
                              )
                              # print(i1,i2,i3,i4,i5,i6,i7,sum)
                              flag = True
                              for i in sum:
                                  if i < x:
                                      flag = False
                              if flag:
                                  result.append(
                                      cost[i1]
                                      + cost[i2]
                                      + cost[i3]
                                      + cost[i4]
                                      + cost[i5]
                                      + cost[i6]
                                      + cost[i7]
                                  )
  if result == []:
      print(-1)
  else:
      print(min(result))
  
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"}]