use std::env;

fn factorial(n: u32) -> u32 {
    if n == 0 {
        1
    } else {
        n * factorial(n - 1)
    }
}

fn main() {
    let args: Vec<String> = env::args().collect();

    if args.len() != 2 {
        eprintln!("Usage: {} <number>", args[0]);
        return;
    }

    let number: u32 = match args[1].parse() {
        Ok(n) => n,
        Err(_) => {
            eprintln!("invalid number");
            return;
        }
    };

    let result = factorial(number);
    println!("{}", result);
}