#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);
}
}