func_code_string: #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]);   }   