include <stdio.h>
int main(){
int n;
scanf("%d",&n);
//定义两个数组,一个用乘法存n!,一个用加法存sum;
int a[100]={0};int b[100]={0};
a[0]=1;b[0]=1;
int i;int j;
for(i=2;i<=n;i++){//1*2*3*...*(n-1)*nfor(j=0;j<100;j++){ //对于每个i,要乘以上一个数的所有位数a[j]*=i;}for(j=0;j<99;j++){//每一项都乘完后再进位if(a[j]>9){a[j+1]+=a[j]/10;a[j]=a[j]%10;}}for(j=0;j<100;j++){//每算完一个n!,各位加到b中,由于是从2!开始计算,直接加上b[0]=1;b[j]+=a[j]; //对于每个n!,各位都加并立刻进位if(b[j]>9){b[j+1]+=b[j]/10;b[j]=b[j]%10;}}
}for(i=99;i>=0&&b[i]==0;i--); //找到第一个不为0的地方for(j=i;j>=0;j--){ //倒序输出printf("%d",b[j]);
}
return 0;
}