output_description: Print the earliest possible time for the kangaroo to reach coordinate X.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      X
attempt: def main():
      n, k = map(int, input().split())
      a = list(filter(lambda x: x < k, list(map(int, input().split()))))
      n = len(a)
      a.sort(reverse=True)
      ng = -1
      ok = n
      while ok - ng > 1:
          mid = (ok + ng) // 2
          dp = [False] * (k + 1)
          dp[0] = True
          f = 0
          for j in range(n):
              if j == mid:
                  continue
              w = a[j]
              for i in range(k, w - 1, -1):
                  if dp[i - w]:
                      dp[i] = True
                      if k - a[mid] <= i < k:
                          ng = mid
                          f = 1
                          break
              if f:
                  break
          else:
              ok = mid
  
      print(n - ok)
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  There is a kangaroo at coordinate 0 on an infinite number line that runs from
  left to right, at time 0. During the period between time i-1 and time i, the
  kangaroo can either stay at his position, or perform a jump of length exactly
  i to the left or to the right. That is, if his coordinate at time i-1 is x, he
  can be at coordinate x-i, x or x+i at time i. The kangaroo's nest is at
  coordinate X, and he wants to travel to coordinate X as fast as possible. Find
  the earliest possible time to reach coordinate X.
samples: [{"input": "6", "output": "3\n    \n\nThe kangaroo can reach his nest at time 3 by jumping to the right three times,\nwhich is the earliest possible time.\n\n* * *"}, {"input": "2", "output": "2\n    \n\nHe can reach his nest at time 2 by staying at his position during the first\nsecond, and jumping to the right at the next second.\n\n* * *"}, {"input": "11", "output": "5"}]