#include<stdio.h>
#include<string.h>
int x[101];
int fp[]={0,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 e[30],e1[30];
int m[101],sol[101];
int y;
int main()
{
int n,k,i,ok,j,p,t;
long u,s;
long a[5001],b[5001];
long c[5001];
int cif,o=0,z=0;
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",&x[i]);
ok=1;
for(j=1;j<=n;j++)
{
ok=1;i=1;
do
{
if(x[j]/fp[i]>0)
{
u=fp[i];
s=0;
while(x[j]/u>0)
{
s+=x[j]/u;
u=u*fp[i];
}
e[i]+=s;
i++;
}
else
ok=0;
}while(ok);
}
ok=1;
u=k;
y=i-1;
for(i=1;i<=100;i++)
{
m[i]=u;
u=k*(i+1);
}
u=0;
for(i=1;i<=y;i++)
{
ok=1;
for(j=1;j<=100;j++)
if(m[j]==e[i])
ok=0;
if(ok)
{
for(j=1;m[j]<e[i];j++);
e1[i]=m[j]-e[i];
sol[++u]=i;
}
}
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
if(u)
{
for(y=1;y<=u;y++)
{p=fp[sol[y]];
do
{
cif=p%10;
a[++o]=cif;
p=p/10;
}while(p);
p=e1[sol[y]];
do
{
cif=p%10;
b[++z]=cif;
p=p/10;
}while(p);
c[0]=o+z-1;
for(i=1;i<=o;i++)
for(j=1;j<=z;j++)
c[i+j-1]=c[i+j-1]+a[i]*b[j];
t=0;
for(i=1;i<=c[0];i++)
{
c[i]=c[i]+t;
t=c[i]/10;
c[i]=c[i]%10;
}
if(t>0)
{
c[0]++;
c[c[0]]=t;
}
memcpy(b,c,sizeof(b));
}
}
for(i=c[0];i>=1;i--)
printf("%ld",c[i]);
return 0;
}