#include<bits/stdc++.h>
using namespace std;
ifstream F("factoriale.in");
ofstream G("factoriale.out");
short c[]={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},i,j,a[101][98],b[101],z[9999],e[9999],f[9999],n,k,m;
void A(short a[],short b[])
{
short i,j,t,c[9999];
for(memset(c,0,sizeof c),i=1;i<=a[0];++i) {
for(t=0,j=1;j<=b[0]||t;c[i+j-1]=(t+=c[i+j-1]+a[i]*(j<=b[0]?b[j]:0))%10,++j,t/=10);
if(i+j-2>c[0])
c[0]=i+j-2;
}
memcpy(a,c,sizeof c);
}
int main()
{
for(i=2;i<101;++i) {
for(j=0;j<25;a[i][c[j]]=a[i-1][c[j]],++j);
for(k=i,j=0;j<25&&c[j]*c[j]<=k;++j)
if(k%c[j]==0)
for(k/=c[j],++a[i][c[j]];k%c[j]==0;k/=c[j],++a[i][c[j]]);
if(k>1)
++a[i][k];
}
for(F>>n>>k;n--;)
for(F>>m,i=0;i<25;b[c[i]]+=a[m][c[i]],++i);
for(z[0]=z[1]=1,i=0;i<25;++i)
if(b[c[i]]%k) {
for(n=k-b[c[i]]%k,e[0]=e[1]=1,f[0]=0,c[i]>9?f[++f[0]]=c[i]%10,f[++f[0]]=c[i]/10:f[++f[0]]=c[i];n;A(f,f),n>>=1)
if(n&1)
A(e,f);
A(z,e);
}
for(i=z[0];i;G<<z[i--]);
return 0;
}