## https://yukicoder.me/problems/no/2806 MOD = 998244353 def main(): N, M = map(int, input().split()) A = list(map(int, input().split())) A.sort() a_map = {} for i in range(N): a_map[A[i]] = i used = [False] * N used[0] = True answer = [] for i in range(N): if used[i]: continue x = A[i] answer.append(A[i]) while x <= M: if x in a_map: index = a_map[x] used[index] = True else: print(-1) return x += A[i] print(len(answer)) print(" ".join(map(str, answer))) if __name__ == "__main__": main()