program password;
const MAXN = 10000000;
type elenco = array[1..MAXN] of qword;
var N,K,i,h, C, x, ricordaindice, inizioricordaid, finericordaid, countrad : qword;
numeri, freq, divisori :elenco;
procedure scambia (var x,y: qword);
var t:qword;
begin
t:=x;
x:=y;
y:=t;
end;
Procedure ordinamento (estremoi,estremos: qword; var v : elenco; ordinato:boolean);
var inf, sup, medio:qword;
pivot :qword;
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v,ordinato);
end;
begin
readln(N,K);
for i:=1 to N do read (numeri[i]); readln;
for i:= 1 to N do begin divisori[i]:=0;freq[i]:=0; end; C:=0; h:=1; inizioricordaid:=0; finericordaid:=0; countrad:=0;
ordinamento (1,N,numeri, true);
for i:=1 to N do if K mod numeri[i]= 0 then begin divisori[h]:=numeri[i]; h:=h+1; end;
for i:=1 to h-1 do write(divisori[i],' '); writeln;
i:=1; while divisori[i]<trunc(sqrt(K)) do i:=i+1; inizioricordaid:=i;
i:=inizioricordaid; while divisori[i]=(sqrt(K)) do begin countrad:=countrad+1; i:=i+1; end;
if countrad=1 then C:=1
else if countrad>1 then C:=(countrad*(countrad-1)) div 2;
finericordaid:=i;
writeln('ricid ',inizioricordaid,' ', finericordaid);
for i:=1 to inizioricordaid -1 do freq[divisori[i]]:=freq[divisori[i]]+1;
for i:=1 to inizioricordaid -1 do write(freq[divisori[i]],' ');writeln;
writeln(C);
end.
cHJvZ3JhbSBwYXNzd29yZDsKY29uc3QgTUFYTiA9IDEwMDAwMDAwOwp0eXBlIGVsZW5jbyA9IGFycmF5WzEuLk1BWE5dIG9mIHF3b3JkOwp2YXIgTixLLGksaCwgQywgeCwgcmljb3JkYWluZGljZSwgaW5pemlvcmljb3JkYWlkLCBmaW5lcmljb3JkYWlkLCBjb3VudHJhZCA6ICBxd29yZDsKICAgIG51bWVyaSwgZnJlcSwgZGl2aXNvcmkgOmVsZW5jbzsKcHJvY2VkdXJlIHNjYW1iaWEgKHZhciB4LHk6IHF3b3JkKTsKdmFyIHQ6cXdvcmQ7CmJlZ2luCiAgIHQ6PXg7CiAgIHg6PXk7CiAgIHk6PXQ7CmVuZDsgIApQcm9jZWR1cmUgb3JkaW5hbWVudG8gKGVzdHJlbW9pLGVzdHJlbW9zOiBxd29yZDsgdmFyIHYgOiBlbGVuY287IG9yZGluYXRvOmJvb2xlYW4pOwp2YXIgaW5mLCBzdXAsIG1lZGlvOnF3b3JkOwogICAgcGl2b3QgOnF3b3JkOwpiZWdpbgogICAgaW5mOj1lc3RyZW1vaTsKICAgIHN1cDo9ZXN0cmVtb3M7CiAgICBtZWRpbzo9IChlc3RyZW1vaStlc3RyZW1vcykgZGl2IDI7CiAgICBwaXZvdDo9dlttZWRpb107CiAgICByZXBlYXQKICAgICAgaWYgKG9yZGluYXRvKSB0aGVuCiAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIHdoaWxlICh2W2luZl08cGl2b3QpIGRvICBpbmY6PWluZisxOwogICAgICAgICAgICB3aGlsZSAodltzdXBdPnBpdm90KSBkbyAgc3VwOj1zdXAtMTsKICAgICAgICAgZW5kOwogICAgICBpZiBpbmY8PXN1cCB0aGVuCiAgICAgICBiZWdpbgogICAgICAgICBzY2FtYmlhKHZbaW5mXSx2W3N1cF0pOwogICAgICAgICBpbmY6PWluZisxOwogICAgICAgICBzdXA6PXN1cC0xOwogICAgICAgZW5kOwogICAgdW50aWwgaW5mPnN1cDsKICAgIGlmIChlc3RyZW1vaTxzdXApIHRoZW4gb3JkaW5hbWVudG8oZXN0cmVtb2ksc3VwLHYsb3JkaW5hdG8pOwogICAgaWYgKGluZjxlc3RyZW1vcykgdGhlbiBvcmRpbmFtZW50byhpbmYsZXN0cmVtb3MsdixvcmRpbmF0byk7CmVuZDsgICAKCmJlZ2luCglyZWFkbG4oTixLKTsKCWZvciBpOj0xIHRvIE4gZG8gcmVhZCAobnVtZXJpW2ldKTsgcmVhZGxuOwoJZm9yIGk6PSAxIHRvIE4gZG8gYmVnaW4gZGl2aXNvcmlbaV06PTA7ZnJlcVtpXTo9MDsgZW5kOyBDOj0wOyBoOj0xOyBpbml6aW9yaWNvcmRhaWQ6PTA7IGZpbmVyaWNvcmRhaWQ6PTA7IGNvdW50cmFkOj0wOwoJb3JkaW5hbWVudG8gKDEsTixudW1lcmksIHRydWUpOyAKCWZvciBpOj0xIHRvIE4gZG8gaWYgSyBtb2QgbnVtZXJpW2ldPSAwIHRoZW4gYmVnaW4gZGl2aXNvcmlbaF06PW51bWVyaVtpXTsgIGg6PWgrMTsgIGVuZDsKICAgIGZvciBpOj0xIHRvIGgtMSBkbyB3cml0ZShkaXZpc29yaVtpXSwnICcpOyB3cml0ZWxuOwogICAgaTo9MTsgd2hpbGUgZGl2aXNvcmlbaV08dHJ1bmMoc3FydChLKSkgZG8gaTo9aSsxOyBpbml6aW9yaWNvcmRhaWQ6PWk7IAogICAgaTo9aW5pemlvcmljb3JkYWlkOyB3aGlsZSBkaXZpc29yaVtpXT0oc3FydChLKSkgZG8gYmVnaW4gY291bnRyYWQ6PWNvdW50cmFkKzE7IGk6PWkrMTsgZW5kOwogICAgaWYgY291bnRyYWQ9MSB0aGVuIEM6PTEKICAgICAgICAgICAgICAgICAgZWxzZSBpZiBjb3VudHJhZD4xIHRoZW4gQzo9KGNvdW50cmFkKihjb3VudHJhZC0xKSkgZGl2IDI7CiAgICBmaW5lcmljb3JkYWlkOj1pOyAKICAgIHdyaXRlbG4oJ3JpY2lkICcsaW5pemlvcmljb3JkYWlkLCcgJywgZmluZXJpY29yZGFpZCk7CiAgICBmb3IgaTo9MSB0byBpbml6aW9yaWNvcmRhaWQgLTEgZG8gIGZyZXFbZGl2aXNvcmlbaV1dOj1mcmVxW2Rpdmlzb3JpW2ldXSsxOwogICAgZm9yIGk6PTEgdG8gaW5pemlvcmljb3JkYWlkIC0xIGRvIHdyaXRlKGZyZXFbZGl2aXNvcmlbaV1dLCcgJyk7d3JpdGVsbjsgCiAgICAKICAgICAgICAgICAgICAgICAgICAgICAKICAgIHdyaXRlbG4oQyk7CmVuZC4K