"""simple docstring"""







def   __UpperCAmelCase    (   UpperCAmelCase_   :    List[str]      ,							UpperCAmelCase_   :    Union[str, Any]  )							->      int:

	'''simple docstring'''





	__snake_case      :							Any						=			[1]
	for i in range(2      ,							UpperCAmelCase_  ):
		factorials.append(factorials[-1] * i  )
	assert 0 <= k < factorials[-1] * n, "k out of bounds"

	__snake_case      :							List[str]						=			[]
	__snake_case      :							Union[str, Any]						=			list(range(UpperCAmelCase_  )  )

	# Find permutation
	while factorials:
		__snake_case      :							Union[str, Any]						=			factorials.pop()
		__snake_case		,    __snake_case      :							Optional[Any]						=			divmod(UpperCAmelCase_      ,							UpperCAmelCase_  )
		permutation.append(elements[number]  )
		elements.remove(elements[number]  )
	permutation.append(elements[0]  )

	return permutation


if __name__ == "__main__":
	import doctest

	doctest.testmod()






"""simple docstring"""







from decimal import Decimal, getcontext
from math import ceil, factorial
def   __UpperCAmelCase    (   UpperCAmelCase_   :    int  )							->      str:

	'''simple docstring'''





	if not isinstance(UpperCAmelCase_      ,							UpperCAmelCase_  ):
		raise TypeError('Undefined for non-integers'  )
	elif precision < 1:
		raise ValueError('Undefined for non-natural numbers'  )

	__snake_case      :							Any						=			precision
	__snake_case      :							Optional[int]						=			ceil(precision / 14  )
	__snake_case      :							List[Any]						=			42_68_80 * Decimal(1_00_05  ).sqrt()
	__snake_case      :							Optional[Any]						=			1
	__snake_case      :							Union[str, Any]						=			13_59_14_09
	__snake_case      :							int						=			Decimal(UpperCAmelCase_  )
	for k in range(1      ,							UpperCAmelCase_  ):
		__snake_case      :							Union[str, Any]						=			factorial(6 * k  ) // (factorial(3 * k  ) * factorial(UpperCAmelCase_  ) ** 3)
		linear_term += 5_45_14_01_34
		exponential_term *= -26_25_37_41_26_40_76_80_00
		partial_sum += Decimal(multinomial_term * linear_term  ) / exponential_term
	return str(constant_term / partial_sum  )[:-1]


if __name__ == "__main__":
	_a					:					List[Any]=			50
	print(f'''The first {n} digits of pi is: {pi(n)}''')





