#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
using ll = long long;
using vl = __int128_t;
using ld = long double;
using ul = unsigned long long;
using ordered_set = tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update>;
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define sz(a) (ll)a.size()
const ll mod = 998244353;
ll pw(ll a, ll b) {
    ll r = 1;
    while (b) {
        if (b & 1) r = (r * a) % mod;
        a = (a * a) % mod, b >>= 1;
    }
    return r;
}
void solve() {
    ll T;
    cin >> T;
    ll n, m;
    cin >> n >> m;
    vector<ll> a(n);
    for (ll& x : a) cin >> x;
    for (ll i = 1; i < n; i++) {
        if ((a[i] & 1) != (a[0] & 1)) {
            cout << "No";
            return;
        }
    }
    cout << "Yes" << '\n';
    if (T == 1) return;
    cout << (m + 1) / 2 << '\n';
    if (T == 2) return;
    cout << 1 << '\n';
=   cout << m / 2 << ' ' << (m + 1) / 2 << '\n';
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    ll t = 1;
    // cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
