#include <bits/stdc++.h>
#define NRP 25
using namespace std;
int n, k, vf[102], nume[]= {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}, f[32];
int v[12], rez[5002], nv, nrez;
void desc(int val)
{
int e=0, valx=val;
for(int i=1; i<=NRP; i++)
if(val%nume[i]==0)
{
while(val%nume[i]==0) e++, val/=nume[i];
f[i]=e*vf[valx];
}
}
void inmulteste()
{
int i, j, t, k, sol[102]= {0};
for(i=1; i<=nrez; i++)
{
k=i-1;
t=0;
for(j=1; j<=nv || t!=0; j++)
{
++k;
sol[k]=sol[k]+rez[i]*v[j]+t;
t=sol[k]/10;
sol[k]%=10;
}
}
for(i=1; i<=k; i++)
rez[i]=sol[i];
nrez=k;
}
void produs(int nr, int exp)
{
memset(v,0,sizeof(v));
while(nr) v[++nv]=nr%10, nr/=10;
for(int i=1; i<=exp; i++)
inmulteste();
}
int main()
{
int i, x;
freopen("factoriale.in","r",stdin);
freopen("factoriale.out","w",stdout);
rez[1]=1, nrez=1;
scanf("%d%d", &n, &k);
vf[1]=n;
for(i=1; i<=n; i++)
{
scanf("%d", &x);
vf[x+1]--;
}
///smenul lui Mars
for(i=1; i<=100; i++) vf[i]+=vf[i-1];
for(i=2; i<=100; i++)
if(vf[i])
desc(i);
for(i=1; i<=NRP; i++)
{
if(f[i]%k!=0)
produs(nume[i],k-f[i]%k);
}
for(i=nrez; i>=1; i--)
printf("%d", rez[i]);
return 0;
}