#include<iostream>
using namespace std;
int a[101] = { 0 }, s[101] = { 0 };
//计算阶乘的每一个因素
void change(int x) {
int g = 0;//进位
for (int i = 100; i >= 0; i--) {
a[i] = a[i] * x + g;//将当前因素乘到数组a中
g = a[i] / 10;//计算进位
a[i] %= 10;
}
}
void qh() {
int g = 0;
for (int i = 100; i >= 0; i--) {
s[i] += a[i] + g;
g = s[i] / 10;
s[i] %= 10;
}
}
void sc() {
int start = 0;
for (int i = 0; i <= 100; i++) {
if(s[i]!=0){
start = i;
break;
}
}
for (int i = start; i <= 100; i++) {
cout << s[i];
}
}
int main() {
int n;
cin >> n;
a[100] = s[100] = 1;//初始化阶乘数组
for (int i = 2; i <= n; i++) {
change(i);
qh();
}
sc();
return 0;
}