#include <bits/stdc++.h>
using namespace std;
int main () {
	int N, M;
	cin >> N >> M;
	std::vector<int> A(N);
	set<int> st, st2;
	for (auto& a : A) {
		cin >> a;
		st.insert(a);
		st2.insert(a);
	}
	sort(A.begin(), A.end());
	vector<int> ans;
	for (int i = 1; i < N; i ++) {
		int a = A[i];
		if (st2.find(a) == st2.end()) continue;
		bool ok = true;
		for (int x = a; x <= M; x += a) {
			if (st.find(x) == st.end()) {
				ok = false;
				break;
			} else if (st2.find(x) != st2.end()) {
				st2.erase(x);
			}
		}
		if (!ok) {
			puts("-1");
			return 0;
		} else {
			ans.push_back(a);
		}
	}
	cout << ans.size() << endl;
	for (int i = 0; i < ans.size(); i ++) {
		cout << ans[i] << (i < ans.size() - 1 ? " " : "");
	}
	cout << endl;
}