#include <iostream>
using namespace std;
const int maxn=10000;
struct largeNum{
    int digit[maxn];
    int length;
    largeNum(string x){
        length=0;
        for(int i=x.length()-1;i>=0;i--){
            digit[length++]=x[i]-'0';
        }
    }
    largeNum(){
        length=0;
    }
    largeNum operator* (largeNum y);
};
largeNum largeNum:: operator*(largeNum y){
    largeNum r;
    r.length=length+y.length;
    for(int i=0;i<r.length;i++) r.digit[i]=0;
    for(int i=0;i<length;i++){
        for(int j=0;j<y.length;j++){
            r.digit[i+j]+=digit[i]*y.digit[j];
        }
    }
    for(int i=0;i<r.length;i++){
        if(r.digit[i]>=10){
            r.digit[i+1]+=r.digit[i]/10;
            r.digit[i]%=10;
        }
    }
    while(r.digit[r.length-1]==0 && r.length>1){
        r.length--;
    }
    return r;

}
string int2str(int x){
    string a;
    while(x>0){
        char n=x%10+'0';
        a=n+a;
        x/=10;
    }
    return a;
}
void outplargenum(largeNum a){
    for(int i=a.length-1;i>=0;i--){
        cout<<a.digit[i];
    }
    cout<<endl;
}
int main() {
    int n;
    while(cin>>n){
        largeNum a("1");
        for(int i=2;i<=n;i++){
            a=a*largeNum(int2str(i));
        }
        outplargenum(a);
    }
}