#include <stdio.h>

char* ans[] = 
{
    /*   0 */ "1",
    /*   1 */ "1",
    /*   2 */ "2",
    /*   3 */ "6",
    /*   4 */ "24",
    /*   5 */ "120",
    /*   6 */ "720",
    /*   7 */ "5,040",
    /*   8 */ "40,320",
    /*   9 */ "362,880",
    /*  10 */ "3,628,800",
    /*  11 */ "39,916,800",
    /*  12 */ "479,001,600",
    /*  13 */ "6,227,020,800",
    /*  14 */ "87,178,291,200",
    /*  15 */ "1,307,674,368,000",
    /*  16 */ "20,922,789,888,000",
    /*  17 */ "355,687,428,096,000",
    /*  18 */ "6,402,373,705,728,000",
    /*  19 */ "121,645,100,408,832,000",
    /*  20 */ "2,432,902,008,176,640,000"
};
    
void factorial(int n)
{
    printf("facorial(%d) = ", n);
    
    if(n < 0 || n > 20) /* Error checking */
    {
        printf("ERROR: Number out of range\n");
    }
    else
    {
        printf("%s\n", ans[n]);
    }

}

int main(int argc, char* argv[])
{
    int i;
    for(i = -1; i<=21; factorial(i++));
    return 0;
}