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 = map(int, input().split())
  ca = [list(map(int, input().split())) for _ in range(n)]
  
  pair = []
  
  for c1 in range(2):
      for c2 in range(2):
          for c3 in range(2):
              for c4 in range(2):
                  for c5 in range(2):
                      for c6 in range(2):
                          for c7 in range(2):
                              for c8 in range(2):
                                  for c9 in range(2):
                                      for c10 in range(2):
                                          for c11 in range(2):
                                              for c12 in range(2):
                                                  pair.append(
                                                      [
                                                          c1,
                                                          c2,
                                                          c3,
                                                          c4,
                                                          c5,
                                                          c6,
                                                          c7,
                                                          c8,
                                                          c9,
                                                          c10,
                                                          c11,
                                                          c12,
                                                      ]
                                                  )
  
  zenkingaku = []
  for pattern in pair:
      rikaido = [0 for _ in range(m)]
      kingaku = 0
      _pattern = pattern[:n]
      for ca_i, p in enumerate(_pattern):
          if p == 1:
              kingaku += ca[ca_i][0]
              for ca_j in range(1, m):
                  rikaido[ca_j] += ca[ca_i][ca_j]
  
      for ca_j in range(1, m):
          if rikaido[ca_j] < x:
              kingaku = -1
  
      if kingaku == -1:
          continue
  
      zenkingaku.append(kingaku)
  
  if not zenkingaku:
      zenkingaku = [-1]
  print(min(zenkingaku))
  
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"}]