import random
from typing import Any




def       _snake_case	(   lowerCAmelCase							:   list	):
		"""simple docstring"""







		for _ in range(len(lowerCAmelCase	)	):
				SCREAMING_SNAKE_CASE_  :		Any				      =    random.randint(0   , len(lowerCAmelCase	) - 1	)
				SCREAMING_SNAKE_CASE_  :		List[Any]				      =    random.randint(0   , len(lowerCAmelCase	) - 1	)
				SCREAMING_SNAKE_CASE_      ,    SCREAMING_SNAKE_CASE_  :		Optional[int]				      =    data[b], data[a]
		return data


if __name__ == "__main__":
		__lowerCamelCase					:	Optional[int]       =  [0, 1, 2, 3, 4, 5, 6, 7]
		__lowerCamelCase					:	Union[str, Any]       =  ['''python''', '''says''', '''hello''', '''!''']
		print('''Fisher-Yates Shuffle:''')
		print('''List''', integers, strings)
		print('''FY Shuffle''', fisher_yates_shuffle(integers), fisher_yates_shuffle(strings))

from functools import lru_cache




@lru_cache
def       _snake_case	(   lowerCAmelCase							:   int	):
		"""simple docstring"""







		if num < 0:
				raise ValueError("Number should not be negative."	)

		return 1 if num in (0, 1) else num * factorial(num - 1	)


if __name__ == "__main__":
		import doctest

		doctest.testmod()
