#include<stdio.h>
#include<string.h>
const int maxn = 50000;
int f[maxn];
int main()
{
int i,j,n;
while(~scanf("%d",&n))
{
memset(f,0,sizeof(f));
f[0]=1; //小于2的阶乘都为1
for(i=2;i<=n;i++)
{
int c=0; //进位
for(j=0;j<maxn;j++)
{
int s=f[j]*i+c;
f[j]=s%10;
c=s/10;
}
}
for(i=maxn-1;i>=0;i--) if(f[i]) break;
for(j=i;j>=0;j--) printf("%d",f[j]);
printf("\n");
}
return 0;
}
#include<stdio.h>
#include<string.h>
int main ()
{
int t,max,n,c,i,j,a[90001];
while (scanf ("%d",&n)==1)
{
memset(a,0,sizeof(a));
a[0]=1;max=1;
for (i=1;i<=n;i++)
{
c=0;
for (j=0;j<max;j++)
{
a[j]=a[j]*i+c;
c=a[j]/10;
a[j]%=10;
if(c&&max<=j+1)
max++;
}
}
if (a[max])
printf ("%d",a[max]);
for (j=max-1;j>=0;j--)
printf ("%d",a[j]);
printf ("\n");
}
return 0;
}