#include <stdio.h>
#define N 2700
int main(void)
{
int n;
while (scanf("%d", &n) != EOF)
{
int i, k, tmp, carry;
int cnt = 0; /*结果的位数*/
int A[N] = {1}; /*初始值为1*/
for (k=2; k<=n; ++k)
{
carry = 0;
for (i=0; i<=cnt; ++i)
{
tmp = (A[i] * k) + carry;
A[i] = tmp % 10; /*本位*/
carry = tmp/10; /*向高位的进位*/
if (i==cnt && carry!=0)
{
++cnt; /*存在进位时,位数增1*/
}
}
}
for (i=cnt; i>=0; --i)
{
printf("%d", A[i]);
}
printf("\n");
}
return 0;
}