import java.math.*;

public class Factorial {

  public static void main(String[] args) {
    int n= Integer.parseInt(args[0]);
    long ini= System.currentTimeMillis();
    BigInteger f= seqFact(n);
    long delta= System.currentTimeMillis()-ini;
    System.out.println("elapsed time= "+delta+" millis");
    if (n<=50)
      System.out.println("factorial("+n+")= "+f);
    else {
      System.out.println("computing number of digits");
      System.out.println("factorial("+n+")= "+f.toString().length()+" digits");
    }
  }

  /* Sequential factorial */

  static BigInteger seqFact(int n) {
    return seqProd(1, n);
  }

  static BigInteger seqProd(int i, int j) {
    BigInteger res= BigInteger.ONE;
    for (int k= i; k<=j; k++)
      res= res.multiply(BigInteger.valueOf(k));
    return res;
  }

}
