'''simple docstring'''






from bisect import bisect
from itertools import accumulate






def  UpperCamelCase__					(					_lowercase    :				Optional[int]   ,    _lowercase    :				Optional[Any]   ,    _lowercase    :				List[str]   ,    _lowercase    :				str     )							->	str:
  __UpperCAmelCase:					List[Any]		= sorted(zip(_lowercase   ,    _lowercase     )   ,    key=lambda _lowercase     : x[0] / x[1]   ,    reverse=_lowercase     )
  __UpperCAmelCase, __UpperCAmelCase:					Optional[Any]		= [i[0] for i in r], [i[1] for i in r]
  __UpperCAmelCase:					int		= list(accumulate(_lowercase     )     )
  __UpperCAmelCase:					Any		= bisect(_lowercase   ,    _lowercase     )
  return (
      0
      if k == 0
      else sum(vl[:k]     ) + (w - acc[k - 1]) * (vl[k]) / (wt[k])
      if k != n
      else sum(vl[:k]     )
  )


if __name__ == "__main__":
    import doctest

    doctest.testmod()
'''simple docstring'''






def  UpperCamelCase__					(					_lowercase    :				int     )							->	int:

  if not isinstance(_lowercase   ,    _lowercase     ):
    __UpperCAmelCase:					List[str]		= F'''Input value of [number={number}] must be an integer'''
    raise TypeError(_lowercase     )

  if number < 1:
    __UpperCAmelCase:					Dict		= F'''Input value of [number={number}] must be > 0'''
    raise ValueError(_lowercase     )

  __UpperCAmelCase:					int		= 1

  for i in range(1   ,    _lowercase     ):
    current_number *= 4 * i - 2
    current_number //= i + 1

  return current_number


if __name__ == "__main__":
    import doctest

    doctest.testmod()