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

using namespace std;

typedef long long ll;
typedef long double ld;

#define int long long
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()

const int inf = 1e18L;
const int mod = 998244353;
const int maxn = 2e5L + 10;

void solve() {
    int T, n, m;
    cin >> T >> n >> m;
    vector<int> pos(n);
    vector<pair<int, int>> b;
    for (int i = 0; i < n; i++) {
        cin >> pos[i];
    }
    string s;
    cin >> s;
    for (int i = 0; i < n; ++i) {
        b.emplace_back(pos[i], s[i] == 'L');
    }
    sort(all(b)); b.resize(unique(all(b)) - b.begin());
    cout << (b.size() == m ? "No" : "Yes");
    if (T == 1) {
        cout << "Yes\n";
        return;
    }
    if (T == 2) {
        int coord;
        if (pos[0] == pos[1] && s[0] == s[1]) {
            cout << "Yes\n" << m;
            return;
        }
        if (pos[0] == pos[1]) {
            cout << "Yes\n";
            cout << pos[0];
            return;
        }
        if (pos[0] <= pos[1] && s[0] == 'L' && s[1] == 'R') {
            cout << "Yes\n";
            cout << (pos[0] + pos[1]) / 2;
            return;
        }
        if (pos[1] <= pos[0] && s[1] == 'L' && s[0] == 'R') {
            cout << "Yes\n";
            cout << (pos[0] + pos[1]) / 2;
            return;
        }
        if (s[1] == s[0]) {
            cout << "Yes\n" << "1";
            return;
        }
        assert(0);
        int x1, x2;
        ll time;
        if (s[0] == 'L') time = pos[0] - 1;
        if (s[1] == 'L') time = pos[1] - 1;
        return;
    }
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
        cout << '\n';
    }
}
