function Trova(N, K: longint; var A: array of longint): longint;
var M,i,j,c,max:longint;
B:array[1..100000] of boolean;
begin
if K=1 then M:=0;
if K>N then M:=N
else
begin
M:=0;
for i:=0 to N - 1 do
for j:=i+1 to N - 1 do
if A[i]>A[j] then
begin
c:=A[i];
A[i]:=A[j];
A[j]:=c
end;
max:=A[N-1];
writeln(max);
for i:=0 to N - 1 do
begin
if (B[A[i]]<>false) then
B[A[i]]:=true;
if (B[A[i]]=true) and (k*A[i]<max+1) then
B[k*A[i]]:=false;
end;
for i:=1 to max do
if B[i]=true then
begin
writeln(i,' ',B[i]);
M:=M+1;
end;
end;
Trova := M;
end;
const
MAXN = 100000;
var
N, K, i: longint;
A : array[0..MAXN-1] of longint;
begin
readln(N, K);
for i:=0 to N-1 do
read(A[i]);
writeln(Trova(N, K, A));
end.
ZnVuY3Rpb24gVHJvdmEoTiwgSzogbG9uZ2ludDsgdmFyIEE6IGFycmF5IG9mIGxvbmdpbnQpOiBsb25naW50OwoKdmFyIE0saSxqLGMsbWF4OmxvbmdpbnQ7CiAgICAgICAgIEI6YXJyYXlbMS4uMTAwMDAwXSBvZiBib29sZWFuOwoKYmVnaW4KICAgICAgIGlmIEs9MSB0aGVuIE06PTA7CiAgICAgICBpZiBLPk4gdGhlbiBNOj1OCiAgICAgICBlbHNlCiAgICAgICBiZWdpbgogICAgICAgTTo9MDsKICAgICAgIGZvciBpOj0wIHRvIE4gLSAxIGRvIAogICAgICAgIGZvciBqOj1pKzEgdG8gTiAtIDEgZG8gCiAgICAgICAgICAgICAgIGlmIEFbaV0+QVtqXSB0aGVuIAogICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICBjOj1BW2ldOwogICAgICAgICAgICAgICAgICAgICAgIEFbaV06PUFbal07CiAgICAgICAgICAgICAgICAgICAgICAgQVtqXTo9YwogICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgIG1heDo9QVtOLTFdOwp3cml0ZWxuKG1heCk7ICAgICAgICAgIAogICAgICAgIGZvciBpOj0wIHRvIE4gLSAxIGRvICAgICAgICAgIAogICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICBpZiAoQltBW2ldXTw+ZmFsc2UpIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgIEJbQVtpXV06PXRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChCW0FbaV1dPXRydWUpIGFuZCAoaypBW2ldPG1heCsxKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICBCW2sqQVtpXV06PWZhbHNlOwogICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgZm9yIGk6PTEgdG8gbWF4IGRvICAKICAgICAgICAgICAgaWYgQltpXT10cnVlIHRoZW4KYmVnaW4Kd3JpdGVsbihpLCcgJyxCW2ldKTsKICAgICAgICAgICAgICAgIE06PU0rMTsKZW5kOwogICAgICAgIGVuZDsKICAgIFRyb3ZhIDo9IE07CmVuZDsKCmNvbnN0CiAgICBNQVhOID0gMTAwMDAwOwp2YXIKICAgIE4sIEssIGk6IGxvbmdpbnQ7CiAgICBBICAgICAgOiBhcnJheVswLi5NQVhOLTFdIG9mIGxvbmdpbnQ7CgpiZWdpbgogICAgcmVhZGxuKE4sIEspOwogICAgZm9yIGk6PTAgdG8gTi0xIGRvCiAgICAgICAgcmVhZChBW2ldKTsKCiAgICB3cml0ZWxuKFRyb3ZhKE4sIEssIEEpKTsKZW5kLg==