#include <bits/stdc++.h>

using namespace std;

#define sll __int128_t
#define ll long long
#define ld long double
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define size(x) (int)(x).size()
#define int long long

const int MOD = 998244353, MAXN = 5e5 + 100, inf = 1e9;
const ll INF = 1e18;

int add(int a, int b) {
    if (a + b >= MOD) {
        return a + b - MOD;
    }
    return a + b;
}
int sub(int a, int b) {
    if (a - b < 0) {
        return a - b + MOD;
    }
    return a - b;
}
int mult(int a, int b) {
    return ((ll)a * b) % MOD;
}
int kv(int a) {
    return ((ll)a * a) % MOD;
}
int fast_pow(int x, int a) {
    if (a == 0) return 1;
    if (a == 1) return x;
    if (a & 1) return mult(x, fast_pow(x, a - 1));
    return kv(fast_pow(x, a / 2));
}

bool check(vector<int> &a) {
    vector<int> c(2);
    for (auto &x : a) {
        c[x % 2]++;
    }
    return min(c[0], c[1]) == 0;
}

void solve(){
    int t; cin >> t;
    int n, m;
    cin >> n >> m;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i]; a[i]--;
    }
    string s; cin >> s;
    if (!check(a)) {
        cout << "No";
        return;
    }
    cout << "Yes\n";
    if (t == 1) return;
    int t1 = 0, t2 = 0;
    if (s[0] == 'R' || a[0] == 0) t1 = 1;
    else t1 = 0;
    if (s[1] == 'R' || a[1] == 0) t2 = 1;
    else t2 = 0;
    int mx = -1, tt = -1;
    for (int i = 0; i < 4 * m; i++) {
        if (a[0] == a[1]) {
            if (a[0] > mx) {
                mx = a[0];
                tt = i;
            }
        }
        if (t1 == 1) a[0]++;
        else a[0]--;
        if (t2 == 1) a[1]++;
        else a[1]--;
        if (a[0] == m - 1) {
            t1 = 0;
        }
        if (a[0] == 0) {
            t1 = 1;
        }
        if (a[1] == m - 1) {
            t2 = 0;
        }
        if (a[1] == 0) {
            t2 = 1;
        }
    }
    cout << mx + 1 << "\n";
    if (t == 2) return;
    cout << "1\n";
    cout << tt << " " << mx + 1;
    // vector<pair<int, int>> f(n);
    // for (int i = 0; i < n; i++) {
    //     if (s[i] == 'R' || a[i] == 0) f[i] = {a[i], 1};
    //     else f[i] = {a[i], 0};
    // }
    // deque<pair<int, vector<pair<int, int>>>> dq;
    // map<pair<int, vector<pair<int, int>>>, int> d;
    // dq.push_back({m, f});
    // d[{m, f}] = 1;
    // while (!dq.empty()) {
    //     auto [mm, nw] = dq.front();
    //     dq.pop_front();
    //     if (mm == 1) continue;
    //
    //     int mx = 0;
    //     for (int i = 0; i < n; i++) {
    //         mx = max(mx, nw[i].first);
    //     }
    //     for (int j = mx + 1; j < mm; j++) {
    //         vector<pair<int, int>> b = nw;
    //         for (int i = 0; i < n; i++) {
    //             if (b[i].first == j - 1) {
    //                 b[i].second = 0;
    //             }
    //         }
    //         if (d[{j, b}] == 0) {
    //             d[{j, b}] = 1;
    //             dq.push_back({j, b});
    //         }
    //     }
    //     vector<pair<int, int>> b(n);
    //     for (int i = 0; i < n; i++) {
    //         if (nw[i].second == 1) {
    //             b[i].first = nw[i].first + 1;
    //         }
    //         else {
    //             b[i].first = nw[i].first - 1;
    //         }
    //         if (b[i].first == mm - 1) {
    //             b[i].second = 0;
    //         }
    //         else if (b[i].first == 0) {
    //             b[i].second = 1;
    //         }
    //         else {
    //             b[i].second = nw[i].second;
    //         }
    //     }
    //     if (d.find({mm, b}) == d.end()) {
    //         d[{mm, b}] = 1;
    //         dq.push_back({mm, b});
    //     }
    // }
    // int ans = 1;
    // for (auto &[p, z] : d) {
    //     auto [mm, b] = p;
    //     if (mm == 1) continue;
    //     bool f = 1;
    //     set<pair<int, int>> st(all(b));
    //
    //     // cout << mm << endl;
    //     //     for (auto [x, y] : b) {
    //     //         cout << "(" << x << " " << y << ")" << " ";
    //     //     }
    //     //     cout << endl;
    //     if (size(st) == 1) {
    //         ans = max(ans, mm);
    //
    //     }
    // }
    // cout << ans;
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
#ifdef LOCAL
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    int ttt = 1;
    //cin >> ttt;
    while (ttt--) {
        solve();
    }
}