#include <stdio.h>
#include <stdlib.h>
typedef struct{
int s[10000];
int size;
}BigNum;
void multify(BigNum*bn,int x);
void factorial(BigNum*bn,int x);
void print(BigNum*bn);
int main() {
int n;
while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
BigNum*bn=(BigNum*)malloc(sizeof(BigNum));
bn->s[0]=1;bn->size=1;
factorial(bn, n);
print(bn);
}
return 0;
}
void multify(BigNum*bn,int x){
int carry=0;
for(int i=0;i<bn->size;i++){
int temp=bn->s[i]*x+carry;
bn->s[i]=temp%10;
carry=temp/10;
}
while(carry){
bn->s[bn->size++]=carry%10;
carry/=10;
}
}
void factorial(BigNum*bn,int x){
for(int i=2;i<=x;i++)multify(bn, i);
}
void print(BigNum*bn){
for(int i=bn->size-1;i>=0;i--)printf("%d",bn->s[i]);
printf("\n");
}