/** 大数阶乘 **/
// 最大可以计算到10000!
#include <stdio.h>
#include <string.h>
#define N 36000 //10000的阶乘大约要36000位
int f[N];
int main()
{
int i,j,n;
int c,s;
while(scanf("%d",&n)!=EOF)
{
memset(f,0,sizeof(f));
f[0]=1;
for(i=2; i<=n; i++)
{
c=0;
for (j=0; j<N; j++) // 将每位阶乘数导入数组
{
s=f[j]*i+c; // s为f[j]*i加上上一位进位的数字
f[j]=s%10; // s%10为本位数字
c=s/10; // s/10为进位的数字
}
}
//忽略前导0
for (j=N-1; j>=0; j--)
if (f[j]) break;
for (i=j; i>=0; i--)
printf("%d",f[i]);
printf("\n");
}
return 0;
}