from sys import argv

def factorielleRecursive(n):
    """
    calcul récursif de la factorielle. Sur ma machine, explose pour n = 998.
    """
    if n == 0:
        return 1
    return n * factorielleRecursive(n-1)

def factorielleIterative(n):
    """
    calcul itératif de la factorielle. Fonctionne encore pour n = 100 000.
    """
    fact = 1
    for i in range(1,n+1):
        fact *= i
    return fact

# passer en premier paramètre le nombre dont on veut calculer la factorielle. Le
# calcul sera alors effectué en utilisant la version récursive. Si on passe "i"
# en deuxième paramètre, c'est la version itérative qui est appelée.
if len(argv) > 2 and argv[2] == "i":
    print(factorielleIterative(int(argv[1])))
else:
    print(factorielleRecursive(int(argv[1])))