#include <stdio.h>

long long factorial (int n) {
	long long f[22] = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368000, 20922789888000, 355687428096000, 6402373705728000, 121645100408832000, 2432902008176640000, 51090942171709440000};
	return f[n]; 
}

int main(void) {
	for (int i = 0; i <= 21; i++) printf("Factoral of %i is %lld\n",i , factorial(i));
	printf("21! overflows a long long, so you only need a lookup table up to 20!");
	return 0;
}