#include <stdio.h>
int a[101];
int n,k;
int ciur[25]={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 p[25];
int prod[10001];
void inmult (int val)
{
int i,c[1001];
c[0]=prod[0];
for (i=1; i<=10000; ++i)
c[i]=0;
for (i=1; i<=c[0]; ++i)
c[i]=prod[i]*val;
for (i=1; i<=c[0]; ++i)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
if (c[i])
++c[0];
while (c[i]>9)
{
c[i+1]=c[i]/10;
c[i]%=10;
++i;
++c[0];
}
for (i=0; i<=c[0]; ++i)
prod[i]=c[i];
}
int main ()
{
freopen ("factoriale.in","r",stdin);
freopen ("factoriale.out","w",stdout);
int i,j,aux;
scanf ("%d%d",&n,&k);
for (i=1; i<=n; ++i)
{
scanf ("%d",&a[i]);
for (j=0; ciur[j]<=a[i]; ++j)
{
aux=a[i];
while (aux)
{
p[j]+=aux/ciur[j];
aux/=ciur[j];
}
}
}
prod[0]=prod[1]=1;
for (i=0; i<=24; ++i)
if (p[i]%k!=0)
{
aux=p[i]%k;
aux=k-aux;
for (j=1; j<=aux; ++j)
inmult (ciur[i]);
}
for (i=prod[0]; i; --i)
printf ("%d",prod[i]);
return 0;
}