//2025. 10 .26 牛客网KY23 N的阶乘
//https://www.nowcoder.com/practice/f54d8e6de61e4efb8cce3eebfd0e0daa?tpId=40&tqId=21355&rp=1&difficulty=&judgeStatus=&tags=/question-ranking
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
string addstring(string a, string b) {
int carry = 0;
string res;
int i = a.size() - 1;
int j = b.size() - 1;
while (i >= 0 && j >= 0) {
int sum = carry + a[i] - '0' + b[j] - '0';
res += sum % 10 + '0';
carry = sum / 10;
i--;
j--;
}
while (i >= 0) {
int sum = carry + a[i] - '0';
res += sum % 10 + '0';
carry = sum / 10;
i--;
}
while (j >= 0) {
int sum = carry + b[j] - '0';
res += sum % 10 + '0';
carry = sum / 10;
j--;
}
if (carry > 0) {
res += carry + '0';
}
reverse(res.begin(), res.end());
return res;
}
string mulstring(string a, int x) {
//x >=0 && x<=10
string res = "";
int carry = 0;
for (int i = a.size() - 1; i >= 0; i--) {
int sum = carry + (a[i] - '0') * x;
res += sum % 10 + '0';
carry = sum / 10;
}
if (carry > 0) {
res += carry + '0';
}
reverse(res.begin(), res.end());
return res;
}
string Function(string a, string b) {
string res = "";
for (int i = b.size() - 1; i >= 0; i--) {
string temp = mulstring(a, b[i] - '0');
for (int j = b.size() - 1; j > i; j--) {
temp = temp + '0';
}
res = addstring(res, temp);
}
return res;
}
int main() {
int N;
while (cin >> N) {
string res = "1";
for (int i = 2; i <= N; i++) {
res = Function(res, to_string(i));
}
cout << res << endl;
}
return 0;
}