// #pragma GCC optimize("O3,fast-math,unroll-loops")
#include <bits/stdc++.h>

#define i64 int64_t
#define vi vector<int>
#define vvi vector<vi>
#define vc vector
#define vb vc<bool>
#define pb push_back
#define pii pair<int, int>
#define fi first
#define se second
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()

using namespace std;

template <typename T>

istream& operator>>(istream& in, vector<T> &a) {
    for (T &el : a) in >> el;
    return in;
}

template <typename T>

ostream& operator<<(ostream& out, vector<T> a) {
    for (T &el : a) out << el << " ";
    return out;
}


void solve() {
    int T;
    cin >> T;
    int n, m;
    cin >> n >> m;
    vi a(n);
    cin >> a;
    string s;
    cin >> s;
    vi cnt(2);
    for (int i = 0; i < n; ++i) ++cnt[(i + a[i]) % 2];
    string ans1 = (abs(cnt[0] - cnt[1]) == n % 2 ? "Yes" : "No");
    if (ans1 == "No") {
        cout << ans1;
        return;
    }
    cout << "Yes\n";
    if (T == 1) return;
    vc<pair<i64, i64>> ans;
    ans.pb({m / 2, m / 2 + 1});
    cout << m / 2 + 1 << '\n';
    if (T == 3) {
        cout << ans.size() << '\n';
        cout << ans[0].fi << " " << ans[0].se;
    }
}

int32_t main() {
    // freopen("inputa.txt", "r", stdin);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    solve();
}