# silnia to jest iloczyn kolejnych liczb naturalnych od 1 do n włącznie
# np. silnia(5) = 1*2*3*4*5 = 120
#     silnia(0) = 1
#     silnia(1) = 1
def silnia(n):
    wynik = 1
    for i in range(2, n+1):
        wynik = wynik * i
    return wynik

# inne możliwe zapisy:
def silnia_while(n):
    wynik = 1
    while n > 1:
        wynik *= n
        n -= 1
    return wynik

def silnia_rek(n):
    if n <= 1:
        return 1
    return n * silnia_rek(n-1)

def silnia_prod(n):
    import math
    return math.prod(range(1, n+1))

def silnia_fact(n):
    import math
    return math.factorial(n)


# aby zakończyć, wpisujemy liczbę ujemną
while True:
    x = int(input('Podaj argument: '))
    if x < 0: break
    wynik = silnia(x)
    print(f'{x}! = {wynik}')
