#include<stdio.h>
int p[40]={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 kk,tt,nr[1000],y,l,j,t[1001],aux,m[101][20],n,k,i,max,v[101];
int main(){
FILE *f=fopen("factoriale.in","r");
fscanf(f,"%d %d",&n,&k);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
if(v[i]>max)
max=v[i];
}
fclose(f);
for(i=2;i<=max;i++){
aux=i;
kk=0;
while(aux!=1){
kk++;
while(aux%p[kk]==0){
m[i][0]++;
m[i][ m[i][0] ]=p[kk];
aux/=p[kk];
}
}
}
for(l=1;l<=n;l++){
for(i=2;i<=v[l];i++){
for(j=1;j<=m[i][0];j++){
t[m[i][j]]++;
}
}
}
nr[0]=1;
nr[1]=1;
for(i=2;i<=max;i++){
if(t[i]!=0&&t[i]%k){
y=k-(t[i]%k);
for(j=1;j<=y;j++){
//nr*=i;
tt=0;
for(l=1;l<=nr[0]||tt;l++,tt/=10){
tt+=nr[l]*i;
nr[l]=tt%10;
}
nr[0]=l-1;
}
}
}
FILE *g=fopen("factoriale.out","w");
for(i=nr[0];i>=1;i--){
fprintf(g,"%d",nr[i]);
}
fclose(g);
return 0;
}