#include <bits/stdc++.h>
using namespace std;
const int maxM=1e5;
vector<int> divP[maxM+1];
bool tag[maxM+1]={};
int main(){
for(int m=1; 2*m<=maxM; m++)
divP[2*m].push_back(2);
for(int m=3; m<=maxM; m+=2){
if(!divP[m].empty())
continue;
for(int p=1; m*p<=maxM; p++)
divP[m*p].push_back(m);
}
//
int N, M, v;
cin>>N>>M;
for(int i=0; i<N; i++){
cin>>v;
for(int prime: divP[v]){
if(tag[prime])
continue;
for(int p=1; prime*p<=M; p++)
tag[prime*p]=1;
}
}
int ans=0;
for(int m=1; m<=M; m++)
ans+=tag[m]==0;
cout<<ans<<'\n';
for(int m=1; m<=M; m++)
if(tag[m]==0)
cout<<m<<'\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgbWF4TT0xZTU7CnZlY3RvcjxpbnQ+IGRpdlBbbWF4TSsxXTsKYm9vbCB0YWdbbWF4TSsxXT17fTsKCmludCBtYWluKCl7Cglmb3IoaW50IG09MTsgMiptPD1tYXhNOyBtKyspCgkgZGl2UFsyKm1dLnB1c2hfYmFjaygyKTsKCSBmb3IoaW50IG09MzsgbTw9bWF4TTsgbSs9Mil7CgkgCWlmKCFkaXZQW21dLmVtcHR5KCkpCgkgCSBjb250aW51ZTsKCSAJZm9yKGludCBwPTE7IG0qcDw9bWF4TTsgcCsrKQoJIAkgZGl2UFttKnBdLnB1c2hfYmFjayhtKTsKCSB9CgkvLwoJaW50IE4sIE0sIHY7CgljaW4+Pk4+Pk07Cglmb3IoaW50IGk9MDsgaTxOOyBpKyspewoJCWNpbj4+djsKCQlmb3IoaW50IHByaW1lOiBkaXZQW3ZdKXsKCQkJaWYodGFnW3ByaW1lXSkKCQkJIGNvbnRpbnVlOwoJCQlmb3IoaW50IHA9MTsgcHJpbWUqcDw9TTsgcCsrKQoJCQkgdGFnW3ByaW1lKnBdPTE7CgkJfQoJfQoJaW50IGFucz0wOwoJZm9yKGludCBtPTE7IG08PU07IG0rKykKCSBhbnMrPXRhZ1ttXT09MDsKCWNvdXQ8PGFuczw8J1xuJzsKCWZvcihpbnQgbT0xOyBtPD1NOyBtKyspCgkgaWYodGFnW21dPT0wKQoJICBjb3V0PDxtPDwnXG4nOwoJcmV0dXJuIDA7Cn0=