#include <stdio.h>
#include <string.h>
#include <math.h>
int prime[105];//素数表
int a[105];//最小公倍数
int b[105][100];
void prime_judge(int prm[])//打素数表
{
int i = 0;
int j = 0;
prime[1] = 0;
for(i = 2; i < 106; i++)
{
for(j = i*i; j < 106; j+=i)
prime[j] = 1;
}
int k = 1;
}
void judge()
{
int i = 1;
int j = 0;
int k = 2;
for(i = 0; i < 106; i++)
a[i] = 1;
for(i = 2; i < 106;i++)
{
int x = i;
for(j = i; j > 1;)
{
int t = 0;
if(prime[j]==0)
{
if(x%j ==0)
{
while(x%j==0)
{
t++;
x = x/j;
}
int w = 0;
int wk = 0;
for(w = 1 ; w < k; w++)
if(a[w] == j)
wk++;
if((t - wk) ==0 || t < wk)
a[k] *= 1;
else
a[k] *= pow(j,t-wk);
}
}
j--;
}
k++;
}
}
void print()
{
memset(b,0,sizeof(b));
int k =0;
for(k = 1; k < 106; k++)
b[k][1] = 1;
int i = 1, j = 0;
for(i = 1; i < 103; i++)
{
for(j = 1; j <= i; j++)
{
int w = 1;
int t = 0;
int t1 = 0;
int www = 1;
while(www < 100)
{
t1 = b[i][w]*a[j] +t;
b[i][w] = ( t1) % 10;
t = t1 / 10;
w++;
www++;
}
}
}
}
int main()
{
int i = 0;
prime_judge(prime);
judge();
print();
int n;
while(scanf("%d",&n) != EOF)
{
int flag = 0;
for(i = 100; i > 0; i--)
if(b[n][i] || flag)
{
printf("%d",b[n][i]);
flag = 1;
}
printf("\n");
}
return 0;
}