#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chkmin(T& x, T y) {
  return x > y ? x = y, true : false;
}
template <class T>
inline bool chkmax(T& x, T y) {
  return x < y ? x = y, true : false;
}
template <class T>
T reads() {
  T x = 0;
  static int f;
  static char c;
  for (f = 1; !isdigit(c = getchar());)
    if (c == '-') f = -1;
  for (x = 0; isdigit(c); c = getchar()) x = x * 10 + c - 48;
  return x * f;
}
struct comp {
  double a, b;
  comp() {}
  comp(double _a, double _b) : a(_a), b(_b) {}
  comp operator+(const comp& o) { return comp(a + o.a, b + o.b); }
  comp operator-(const comp& o) { return comp(a - o.a, b - o.b); }
  comp operator*(const comp& o) {
    return comp(a * o.a - b * o.b, a * o.b + b * o.a);
  }
};
int n, m, t, L, q, R[4000005], d[1000005], o[1000005], ans[1000005];
comp a[4000005], c[4000005];
void fft(comp* a, int x) {
  for (int i = 0; i <= m - 1; ++i)
    if (i < R[i]) swap(a[i], a[R[i]]);
  for (int s = 2; s <= m; s <<= 1) {
    comp w0 = comp(cos(2 * acos(-1) / s), x * sin(2 * acos(-1) / s));
    for (int k = 0; k < m; k += s) {
      comp w = comp(1, 0);
      for (int j = 0; j <= s / 2 - 1; ++j) {
        comp t = w * a[k + j + s / 2], u = a[k + j];
        a[k + j] = u + t;
        a[k + j + s / 2] = u - t;
        w = w * w0;
      }
    }
  }
  if (x == -1)
    for (int i = 0; i <= m - 1; ++i) a[i].a /= m;
}
int main(void) {
  q = reads<int>();
  n = reads<int>();
  m = 1;
  for (int i = 1; i <= q; ++i) o[i] = reads<int>(), ans[o[i]] = 1;
  for (int i = 1; i <= q; ++i) a[o[i]] = comp(1, 0);
  n = n * 2;
  while (m < n) m <<= 1, L++;
  for (int i = 0; i <= m - 1; ++i)
    R[i] = (R[i >> 1] >> 1) | ((i & 1) << (L - 1));
  fft(a, 1);
  for (int i = 0; i <= m - 1; ++i) c[i] = a[i] * a[i];
  fft(c, -1);
  for (int i = 1; i <= n / 2; ++i) {
    d[i] = (int)(c[i].a + 0.1);
    if (d[i] && !ans[i]) {
      puts("NO");
      return 0;
    } else if (d[i])
      ans[i] = 0;
  }
  int ans1 = 0;
  for (int i = 1; i <= n / 2; ++i)
    if (ans[i]) ans1++;
  printf("YES\n%d\n", ans1);
  for (int i = 1; i <= n / 2; ++i)
    if (ans[i]) printf("%d ", i);
  puts("");
  return 0;
}
