#include<stdio.h>
#include<string.h>
int n,k,x[110];
int p[]={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 f[100];
int a[10],b[499000],c[499000];
void read()
{
int i;
scanf("%d%d",&n,&k);
for (i=1;i<=n;i++)
scanf("%d",&x[i]);
}
void factp()
{
int i,j;
int k,lim,e,t;
for (i=1;i<=n;i++)
{
lim=x[i]/p[1];
j=1;
e=p[1];
while (lim)
{
t=lim;
if (f[0]<j)
f[0]=j;
while (t)
{
f[j]+=t;
e*=p[j];
t=x[i]/e;
}
j++;
lim=x[i]/p[j];
}
}
}
void numar()
{
int i;
for (i=1;i<=f[0];i++)
{
if (f[i])
{
if (f[i]%k!=0)
f[i]=(f[i]/k+1)*k-f[i];
else f[i]=0;
}
}
}
void produs()
{
int i,j,t;
memset(c,0,sizeof(c));
c[0]=a[0]+b[0]-1;
for (i=1;i<=a[0];i++)
for (j=1;j<=b[0];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)
{
c[++c[0]]=t;
}
}
void calc()
{
int i,j,k,l,m,h,q;
b[1]=1;
b[0]=1;
for (i=1;i<=f[0];i++)
{
if (f[i])
{
a[0]=0;
do
{
a[++a[0]]=p[i]%10;
p[i]/=10;
}
while (p[i]);
for (l=1;l<=f[i];l++)
{
produs();
memcpy(b,c,sizeof(c));
}
}
}
for (i=c[0];i>=1;i--)
printf("%d",c[i]);
}
int main()
{
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
read();
factp();
numar();
calc();
fcloseall();
return 0;
}