# include <iostream>
using namespace std;

const int INF=1e9;
const int MAX=2e5+11;

int T;
int n,m;
int a[MAX];
char dir[MAX];

pair<int,int> ori[MAX];
int oriM;
bool yes=0;

void rollback()
{
    yes=0;
    for(int i=1;i<=n;i++)
    {
        a[i]=ori[i].first;
        dir[i]=ori[i].second;
    }
    m=oriM;
}

bool cut(int x)
{
    for(int i=1;i<=n;i++)
    {
        if(a[i]>x) return false;
        if(a[i]==x) dir[i]='L';
    }
    m=x;
    return true;
}

void simulate(int t)
{
    while(t--)
    {
        bool f=1;
        for(int i=1;i<=n;i++)
        {
            if(a[i]!=a[1] or dir[i]!=dir[1]) f=0;
        }
        if(f)
        {
            yes=1;
            break;
        }

        for(int i=1;i<=n;i++)
        {
            if(dir[i]=='L') a[i]--;
            else a[i]++;

            if(a[i]==1) dir[i]='R';
            if(a[i]==m) dir[i]='L';
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);

    cin>>T;
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>dir[i];

    bool f[2]={0,0};
    for(int i=1;i<=n;i++) f[a[i]%2]=1;
    if(f[0] and f[1]) {cout<<"No"<<"\n";return 0;}
    cout<<"Yes"<<"\n";
    if(T==1) return 0;

    for(int i=1;i<=n;i++)
    {
        ori[i]={a[i],dir[i]};
        oriM=m;
    }

    int ans=2;
    simulate(1000);
    if(yes) ans=m;
    else
    {
        if(m==4)
        {
            rollback();
            for(int t=0;t<=1000;t++)
            {
                simulate(t);
                if(!cut(m-1))
                {
                    rollback();
                    continue;
                }
                simulate(1000);
                if(yes)
                {
                    ans=m-1;
                    break;
                }
            }
        }
    }

    cout<<ans<<"\n";

    return 0;
}


