





from math import pi, sqrt



def A_     (		A__    )  ->		float:
       if num <= 0:
              raise ValueError('math domain error'    )
       if num > 1_71.5:
              raise OverflowError('math range error'    )
       elif num - int(A__    ) not in (0, 0.5):
              raise NotImplementedError('num must be an integer or a half-integer'    )
       elif num == 0.5:
              return sqrt(A__    )
       else:
              return 1.0 if num == 1 else (num - 1) * gamma(num - 1    )



def A_     (		)  ->		None:
       assert gamma(0.5    ) == sqrt(A__    )
       assert gamma(1    ) == 1.0
       assert gamma(2    ) == 1.0


if __name__ == "__main__":
    from doctest import testmod

    testmod()
    lowercase				:	Optional[Any]      						=  1.0
    while num:
        lowercase				:	List[Any]      						=  float(input("""Gamma of: """))
        print(F"""gamma({num}) = {gamma(num)}""")
        print("""\nEnter 0 to exit...""")









import enum
import shutil
import sys


lowercase						, lowercase				:	List[Any]      						=  shutil.get_terminal_size()

lowercase				:	Union[str, Any]      						=  {"""UP""": """A""", """DOWN""": """B""", """RIGHT""": """C""", """LEFT""": """D"""}





class 			A__   (							enum.Enum     ):




   """simple docstring"""



   __A       :    List[str]	  =  0
   __A       :    str	  =  1



def A_     (		A__		,				A__=""    )  ->		int:
       sys.stdout.write(str(A__    ) + end    )
       sys.stdout.flush()



def A_     (		A__		,				A__		,				A__=""    )  ->		int:
       forceWrite(F'\u001b[{color}m{content}\u001b[0m'		,				A__    )



def A_     (		)  ->		Any:
       forceWrite('\r'    )



def A_     (		A__		,				A__    )  ->		List[str]:
       forceWrite(F'\033[{num_lines}{CURSOR_TO_CHAR[direction.upper()]}'    )



def A_     (		)  ->		Any:
       forceWrite(' ' * TERMINAL_WIDTH    )
       reset_cursor()



def A_     (		)  ->		Any:
       reset_cursor()
       forceWrite('-' * TERMINAL_WIDTH    )


