#include
#include
#define max 100000
int main()
{ //大数阶乘,多位一存
int a[100005],n;
long long jinwei,weishu,num;
while(scanf("%d",&n)!=EOF)
{
memset(a,0,sizeof(a));
a[0]=1;weishu=1;
for(int i=1;i<=n;i++)
{
//part 1
jinwei=0;
for(long long j=0;j<weishu;j++)
{
num=a[j]*i+jinwei;
jinwei=num/max;
a[j]=num%max;
}
//part 2
if(jinwei>0){
a[weishu]=jinwei;weishu++;
}
}
//part 3
printf("%d",a[weishu-1]);
for(long long i=weishu-1-1;i>=0;i--)
printf("%05d",a[i]);
putchar('\n');
}
return 0;
}