import java.math.BigInteger;

public class Factorial_9_InputErrors {

   public static BigInteger factorial(int n) {
      if (n < 0)
         throw new IllegalArgumentException();
      BigInteger prod = BigInteger.ONE;
      for (int i = 1; i <= n; i++)
         prod = prod.multiply(new BigInteger(i + ""));
      return prod;
   }

   public static void main(String[] args) {
      try {
         int n = Integer.parseInt(args[0]);
         System.out.println(n + "! = " + factorial(n));
      } catch (ArrayIndexOutOfBoundsException e) {
         System.out.println("Command-line argument required");
      } catch (NumberFormatException e) {
         System.out.println("Argument must be an integer");
      } catch (IllegalArgumentException e) {
         System.out.println("Factorial arg cannot be negative");
      }
   }
}