#include <iostream>
#include <string>
using namespace std;
typedef long long ll;
string addString(string a, string b) {
int carry = 0; //进位
string res = "";
int i = a.length()-1;
int j = b.length()-1;
while(i>=0 && j>=0) {
int cur_sum = (a[i]-'0') + (b[j]-'0') + carry;
res = char(cur_sum%10+'0') + res;
carry = cur_sum/10;
i--;
j--;
}
while(i>=0) {
int cur_sum = (a[i]-'0')+carry;
res = char(cur_sum%10+'0') + res;
carry = cur_sum/10;
i--;
}
while(j>=0) {
int cur_sum = (b[j]-'0')+carry;
res = char(cur_sum%10+'0') + res;
carry = cur_sum/10;
j--;
}
if(carry>0) {
res = char(carry+'0') + res;
}
return res;
}
string mulString(string a, int x) {
int carry = 0;
int i = a.length()-1;
string res = "";
while(i>=0) {
int cur_times = (a[i]-'0')*x + carry;
res = char(cur_times%10+'0') + res;
carry = cur_times/10;
i--;
}
if(carry>0) {
res = char(carry+'0') + res;
}
return res;
}
string MulString(string a, string b) {
string res = "";
int len_b = b.length();
for(int i = 0; i<len_b; i++) {
int x = b[len_b-1-i]-'0';
string cur_times = mulString(a, x);
for(int j = 0; j<i; j++) {
cur_times = mulString(cur_times, 10);
}
res = addString(res, cur_times);
}
return res;
}
int main() {
int n;
while (cin >> n) { // 注意 while 处理多个 case
string res = "1";
for(int i = 2; i<=n; i++) {
res = MulString(res, to_string(i));
}
cout << res << endl;
}
}
// 64 位输出请用 printf("%lld")