

import java.math.BigInteger;

public class BigFactorial
{
    public static void main(String[] args)
    {
        BigInteger out;
    
        System.out.println("Long.MAX_VALUE = " + Long.MAX_VALUE);
        
        out = factorial(20);
        System.out.println("20! =            " + out);
        
        out = factorial(21);
        System.out.println("21! =            " + out);
    }
    
    public static BigInteger factorial(long n)
    {
        BigInteger result = new BigInteger( "1") ;
        
        for ( int i = 1; i <= n; i++ )
        {
            BigInteger iBig = new BigInteger( "" + i); // int i --> String
                 
            result = result.multiply(iBig);   
        }

        return result;
    }   
}
