def factorial(n):
    if n < 0: raise ValueError("n must be non-negative")
    if n <= 1: return 1
    return n * factorial(n-1)

assert factorial(0) == 1
assert factorial(5) == 120
print(factorial(5))
