/// Author : Shohanur Rahaman
/// HackerEarth : Number Mania
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#define N 100 // prime
#define F 500
#define B 10 // base
char P[N];
int fact[F];
void sieve( )
{
int i,j,root;
for(i=0;i<N;i++)
P[i]=1;
P[0]=P[1]=0; // zero one are not prime
root=sqrt(N);
for(i=2;i<=root;i++)
if(P[i]==1){
for(j=2;i*j<=N;j++)
P[i*j]=0;
}
}
int factorial(int n)
{
int i,j,size=0,carry=0,tmp=0,a;
memset(fact,0,N);
fact[0]=1;
size=1;
carry=0;
for(j=1;j<=n;j++){
for(i=0;i<size;i++){
tmp=fact[i]*j+carry;
fact[i]=tmp%B;
carry=tmp/B;
}
while(carry>0){
fact[size++]=carry%B;
carry=carry/B;
}
}
return size;
}
int main()
{
sieve();
int i,n,a,size=1;
while(scanf("%d",&n)==1){
for(i=2;i<=n;i++){
if(P[i]==1){
// printf("%d ",i);
size = factorial(i);
for(a=size-1;a>=0;a--){
printf("%d",fact[a]);
}
printf("\n");
}
}
} // end while
return 0;
}