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