//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;
}