output_description: Print the number of the unnecessary cards.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      N K
      a_1 a_2 ... a_N
attempt: N, K = map(int, input().split())
  tmp = list(map(int, input().split()))
  card = []
  ans = 0
  for c in tmp:
      if c < K:
          card.append(c)
  
  dpf = []
  dpr = []
  dpf.append([0] * K)
  dpr.append([0] * K)
  dpf[0][0] = 1
  dpr[0][0] = 1
  for i in range(len(card)):
      tmp = [0] * K
      c = card[i]
      for j in range(K - c):
          if dpf[-1][j] == 1:
              tmp[j + c] = 1
              tmp[j] = 1
      dpf.append(tmp)
  for i in reversed(range(len(card))):
      tmp = [0] * K
      c = card[i]
      for j in range(K - c):
          if dpr[-1][j] == 1:
              tmp[j + c] = 1
              tmp[j] = 1
      dpr.append(tmp)
  reversed(dpr)
  
  print(dpf)
  print(dpr)
  ans = len(card)
  for i in range(len(card)):
      x = dpf[i]
      y = dpr[len(card) - i - 1]
      itx = 0
      ity = K - 1
      c = card[i]
      for j in range(K):
          if x[itx] == 1:
              break
          itx += 1
      for j in range(K):
          if y[ity] == 1:
              break
          ity -= 1
      while True:
          if itx + ity >= K - c and itx + ity < K:
              ans -= 1
              break
          if itx + ity < K - c:
              if itx == K - 1:
                  itx += 1
              while itx + 1 < K:
                  itx += 1
                  if x[itx] == 1:
                      break
              if itx == K - 1 and x[itx] == 0:
                  itx += 1
              if itx >= K:
                  break
          if itx + ity >= K:
              if ity == 0:
                  ity -= 1
              while ity - 1 >= 0:
                  ity -= 1
                  if y[ity] == 1:
                      break
              if ity == 0 and y[ity] == 0:
                  ity -= 1
              if ity < 0:
                  break
  
  print(ans)
  
problem_description: Statement
  
  AtCoDeer the deer has N cards with positive integers written on them. The
  number on the i-th card (1≤i≤N) is a_i. Because he loves big numbers, he calls
  a subset of the cards _good_ when the sum of the numbers written on the cards
  in the subset, is K or greater.
  
  Then, for each card i, he judges whether it is _unnecessary_ or not, as
  follows:
  
    * If, for any good subset of the cards containing card i, the set that can be obtained by eliminating card i from the subset is also good, card i is unnecessary.
    * Otherwise, card i is NOT unnecessary.
  
  Find the number of the unnecessary cards. Here, he judges each card
  independently, and he does not throw away cards that turn out to be
  unnecessary.
samples: [{"input": "3 6\n    1 4 3", "output": "1\n    \n\nThere are two good sets: {2,3} and {1,2,3}.\n\nCard 1 is only contained in {1,2,3}, and this set without card 1, {2,3}, is\nalso good. Thus, card 1 is unnecessary.\n\nFor card 2, a good set {2,3} without card 2, {3}, is not good. Thus, card 2 is\nNOT unnecessary.\n\nNeither is card 3 for a similar reason, hence the answer is 1.\n\n* * *"}, {"input": "5 400\n    3 1 4 1 5", "output": "5\n    \n\nIn this case, there is no good set. Therefore, all the cards are unnecessary.\n\n* * *"}, {"input": "6 20\n    10 4 3 10 25 2", "output": "3"}]