#include <iostream>

int facto(int k)
{
    int n(1);
    while (n < k + 1)
    {
        n = n * (n + 1);
        n++;
    }
    return n;
}

void do_test(int arg, int expected)
{
	std::cout << arg << "! " ;
	
	int result = facto(arg) ;
	
	if (result == expected)
		std::cout << "Pass!\n" ;
	else
		std::cout << "Fail! Result: " << result << " Expected: " << expected << '\n'; 
}

void test_factorial()
{
	do_test(4, 4*3*2) ;
	do_test(3, 3*2) ;
	do_test(2, 2) ;
	do_test(1, 1) ;
	do_test(0, 1) ;
}

int main()
{
    test_factorial();
}