using System;
using static System.Console;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static int NN => int.Parse(ReadLine());
    static int[] NList => ReadLine().Split().Select(int.Parse).ToArray();
    static int[][] NArr(long n) => Enumerable.Repeat(0, (int)n).Select(_ => NList).ToArray();
    static int[] LList(long n) => Enumerable.Repeat(0, (int)n).Select(_ => int.Parse(ReadLine())).ToArray();
    public static void Main()
    {
        Solve();
    }
    static void Solve()
    {
        var c = NList;
        var (n, m) = (c[0], c[1]);
        var a = NList;
        Array.Sort(a);
        var dic = new Dictionary<int, int>();
        foreach (var ai in a) dic[ai] = 0;
        var ans = new List<int>();
        foreach (var ai in a)
        {
            if (ai == 0) continue;
            if (dic[ai] > 0) continue;
            ans.Add(ai);
            for (var b = ai; b <= m; b += ai)
            {
                if (!dic.ContainsKey(b))
                {
                    WriteLine(-1);
                    return;
                }
                ++dic[b];
            }
        }
        WriteLine(ans.Count);
        WriteLine(string.Join(" ", ans));
    }
}