#include<stdio.h>
int p[30]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int ok,h,cif,t,n,k,i,x,j,c,put,m[101],y[101];
long f[30],sp[30];
int main()
{
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
scanf("%d %d",&n,&k);
ok=0;
for(i=1;i<=n;++i)
{
if(x>1) ok=1;
for(j=0;j<25;++j)
{
c=x;
put=p[j];
while(c/put)
{
f[j]+=c/put;
put=put*p[j];
}
}
}
for(j=0;j<25;++j)
if(f[j])
if(f[j]%k) sp[j]=k-(f[j]%k);
m[1]=1;
for(j=0;j<25;++j)
{
if(sp[j])
{
if(p[j]<10)
{
for(i=1;i<=sp[j];++i)
{
t=0;
for(h=1;h<=100;++h)
if(p[j]*m[h]+t<10) { m[h]=m[h]*p[j]+t; t=0;}
else { c=m[h];m[h]=(m[h]*p[j]+t)%10; t=(c*p[j]+t)/10;}
}
}
else
{
for(i=1;i<=sp[j];++i)
{
cif=p[j]%10;
for(h=1;h<=100;++h)
m[h]=m[h]*cif;
cif=p[j]/10;
for(h=1;h<=100;++h)
y[h]=m[h];
for(h=2;h<=100;++h)
m[h]+=y[h-1]*cif;
t=0;
for(h=1;h<=100;++h)
{ c=m[h];m[h]=(m[h]+t)%10; t=(c+t)/10;}
}
}
}
}
for(i=100;i>=1;--i)
if(m[i]!=0) {c=i; break;}
for(i=c;i>=1;--i)
printf("%d",m[i]);
return 0;
}