#include
#include
using namespace std;
vector multiply(vector& nums1, vector& nums2) {//高精度乘法
int len1 = nums1.size(), len2 = nums2.size();
vector res(len1 + len2, 0);
for (int i = len1 - 1; i >= 0; i--) {
for (int j = len2 - 1; j >= 0; j--) {
int mul = nums1[i] * nums2[j];
int p1 = i + j, p2 = i + j + 1;
int sum = mul + res[p2];
res[p2] = sum % 10;
res[p1] += sum / 10;
}
}
while (!res.empty() && res[0] == 0) res.erase(res.begin());
return res;
}
vector factorial(int n) {//计算n的阶乘
vector res(1, 1);
for (int i = 2; i <= n; i++) {
vector temp = res;
vector num;
while (i > 0) {
num.push_back(i % 10);
i /= 10;
}
for (int j = 0; j < num.size(); j++) {
num[j] *= temp[0];
}
res = multiply(num, temp);
}
return res;
}
int main() {
int n;
cin >> n;
vector res = factorial(n);
for (int i = res.size() - 1; i >= 0; i--) {
cout << res[i];
}
return 0;