//hdu1042
//N! 10000以内的阶乘
//375MS
#include<iostream>
#include<cmath>
#define N 10001
using namespace std;
int f[N];
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int i, j, m=0;
memset(f, 0, sizeof(f));
f[0] = 1;
for( i=2; i <= n; i++ )
{
int c = 0;
for( j=0; j <= m; j++ )
{
int s = f[j] * i + c;
f[j] = s % 10000;
c = s / 10000;
}
while(c)
{
m = j;
f[j] = c % 10000;
c /= 10000;
j++;
}
}
printf("%d", f[m]);
for( j=m-1; j >= 0; j--)
printf("%04d", f[j]);
printf("\n");
}
return 0;
}
//N! 10000以内的阶乘
//375MS
#include<iostream>
#include<cmath>
#define N 10001
using namespace std;
int f[N];
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
int i, j, m=0;
memset(f, 0, sizeof(f));
f[0] = 1;
for( i=2; i <= n; i++ )
{
int c = 0;
for( j=0; j <= m; j++ )
{
int s = f[j] * i + c;
f[j] = s % 10000;
c = s / 10000;
}
while(c)
{
m = j;
f[j] = c % 10000;
c /= 10000;
j++;
}
}
printf("%d", f[m]);
for( j=m-1; j >= 0; j--)
printf("%04d", f[j]);
printf("\n");
}
return 0;
}