program NOD_SOFTWARE;
const x:array [1..25] of byte = (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);
var c,i,j,n,m,k,f,t:integer;
fin,fout:text;
v:array [1..100] of integer;
z:array [1..100] of byte;
ok:boolean;
{*----------------------*}
begin
assign(fin,'factoriale.in'); reset(fin);
assign(fout,'factoriale.out'); rewrite(fout);
readln(fin,n,k);
for i:=1 to n do read(fin,v[i]);
for i:=1 to n do
begin{calculam exponentul nr. prim}
for j:=2 to v[i] do
begin
f:=j;
for t:=1 to 25 do
begin
while f mod x[t] = 0 do
begin
inc(z[t]);
f:=f div x[t];
end;
if f = 1 then break;
end;
end;
end;
c:=1;
ok:=true;
for i:=1 to 25 do
begin
if z[i] > 0 then
begin
while z[i] mod k <> 0 do
begin
inc(z[i]);
c:=c*x[i];
end;
end;
end;
writeln(fout,c);
close(fin);
close(fout);
end.