added Decimal to handle very large factorials