#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[10000]={0};
a[1]=1;
int length=1;
long temp=0;
for(int i=1;i<=n;i++)
{
temp=0;
for(int j=1;j<=length;j++)
{
temp=temp+a[j]*i;
if(temp>=10)
a[j]=temp%10;
else
a[j]=temp;
temp/=10;
}
while(temp!=0)
{
length++;
a[length]=temp%10;
temp/=10;
}
}
for(int i=length;i>=1;i--)
cout<<a[i];
return 0;
}
/*
高精度,阶乘计算问题
数组值长度要足够长
算法思想:数组从各位开始,每个数都乘以一个数 当结果大于十时,这个位置只存结果对十的余数,将结果除以十并加进下次的相乘。
当最后的结果大于十,就开始增加长度
*/