func_code_string: #include <bits/stdc++.h>   using namespace std;   void fft(vector<complex<double> > &a, bool invert) {     int n = a.size(), lg = 0;     while (1 << lg < n) ++lg;     assert(1 << lg == n);     for (int i = 0; i < n; ++i) {       int rev = 0;       for (int j = 0; j < lg; ++j)         if ((i & 1 << j) != 0) rev |= 1 << (lg - j - 1);       if (i < rev) swap(a[i], a[rev]);     }     vector<complex<double> > roots(n);     for (int i = 0; i < n; ++i) {       double a = 2 * M_PI * i / n * (invert ? -1 : 1);       roots[i] = complex<double>(cos(a), sin(a));     }     for (int len = 2; len <= n; len *= 2)       for (int i = 0; i < n; i += len)         for (int j = 0; j < len / 2; ++j) {           complex<double> u = a[i + j],                           v = a[i + j + len / 2] * roots[n / len * j];           a[i + j] = u + v;           a[i + j + len / 2] = u - v;         }     if (invert)       for (int i = 0; i < n; ++i) a[i] /= n;   }   vector<int> multiply(const vector<int> &a, const vector<int> &b) {     int m = a.size(), n = b.size(), p = 2;     while (p < m + n - 1) p <<= 1;     vector<complex<double> > pa(p), pb(p);     for (int i = 0; i < m; ++i) pa[i] = complex<double>(a[i], 0);     for (int i = 0; i < n; ++i) pb[i] = complex<double>(b[i], 0);     fft(pa, false);     fft(pb, false);     for (int i = 0; i < p; ++i) pa[i] *= pb[i];     fft(pa, true);     vector<int> res(p);     for (int i = 0; i < p; ++i) res[i] = (int)round(real(pa[i]));     return res;   }   int main() {     ios::sync_with_stdio(false);     cin.tie(NULL);     int n, m;     cin >> n >> m;     vector<bool> hasBag(m + 1);     vector<int> p(m + 1);     for (int i = 0; i < n; ++i) {       int w;       cin >> w;       p[w] = 1;       hasBag[w] = true;     }     p = multiply(p, p);     for (int i = 1; i <= m; ++i)       if (p[i] > 0) {         if (!hasBag[i]) return cout <<  NO , 0;         hasBag[i] = false;       }     printf( YES n%d n , count(hasBag.begin(), hasBag.end(), 1));     for (int i = 1; i <= m; ++i)       if (hasBag[i] == 1) printf( %d  , i);     return 0;   }   