#include <fstream>
using namespace std;
int v[105];
bool ciur[105];
int obez[]= {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,100};
int put[]= {6,4,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int ok=0;
int sum[1005];
void Mult(unsigned long X)
/* sum <- sum*X */
{
int i;
unsigned long T=0;
for (i=1; i<=sum[0]; i++)
{
sum[i]=sum[i]*X+T;
T=sum[i]/10;
sum[i]=sum[i]%10;
}
while (T) /* Cat timp exista transport */
{
sum[++sum[0]]=T%10;
T/=10;
}
}
int main()
{
ifstream cin("factoriale.in");
ofstream cout("factoriale.out");
sum[0]=1;
sum[1]=1;
while(obez[ok++]!=100)
{
ciur[obez[ok-1]]=1;
}
unsigned long long int n,k,x;
cin>>n>>k;
for(int i=0; i<n; i++)
{
cin>>x;
ok=23;
while(ok>0)
{
for(int j=1; j<=put[obez[ok]]; j++)
{
v[obez[ok]]+=x/(obez[ok]*j);
}
ok--;
}
}
for(unsigned int i=2; i<=100; i++)
{
if((v[i]%k)!=0)
{
int aux=k-v[i]%k;
while(aux>0)
{
Mult(i);
aux--;
}
}
}
for(int i=sum[0]; i>=1; i--)
cout<<sum[i];
return 0;
}