#include <bits/stdc++.h>
const int N = 1050000;
const double pi = acos(-1.0);
int a[N], ans[N], rev[N << 1];
std::complex<double> b[N << 1];
void FFT(std::complex<double> *a, int n, int f) {
  for (int i = 0; i < n; i++)
    if (i < rev[i]) std::swap(a[i], a[rev[i]]);
  for (int i = 1; i < n; i <<= 1) {
    std::complex<double> wn(cos(pi / i), f * sin(pi / i));
    for (int j = 0; j < n; j += i << 1) {
      std::complex<double> w(1, 0);
      for (int k = j; k < j + i; k++, w *= wn) {
        std::complex<double> x = a[k], y = w * a[k + i];
        a[k] = x + y;
        a[k + i] = x - y;
      }
    }
  }
  if (f == -1)
    for (int i = 0; i < n; i++) a[i] /= n;
}
int main() {
  int n, m;
  scanf("%d%d\n", &n, &m);
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%d", &x);
    b[x] = a[x] = 1;
  }
  int len = 0, L = 1;
  for (; L <= m * 2; len++) L <<= 1;
  for (int i = 0; i < L; i++)
    rev[i] = rev[i >> 1] >> 1 ^ ((i & 1) << (len - 1));
  FFT(b, L, 1);
  for (int i = 0; i < L; i++) b[i] *= b[i];
  FFT(b, L, -1);
  int k = 0;
  for (int i = 1; i <= m; i++)
    if (!a[i] && b[i].real() >= 0.5) {
      printf("NO\n");
      return 0;
    } else if (a[i] && b[i].real() < 0.5)
      ans[++k] = i;
  printf("YES\n%d\n", k);
  for (int i = 1; i <= k; i++) printf("%d ", ans[i]);
}
