#include <bits/stdc++.h>
/*#include <iostream>
#include <algorithm>
#include <math.h>
#include <iomanip>
#include <string>
#include <vector>
#include <set>
#include <sstream>*/

#define ll long long
#define fop(i,m,n) for(int i=m; i<n; i++)
#define fastIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define X first
#define Y second
#define pb push_back
#define mp make_pair
#define all(v) v.begin(),v.end()
#define ep emplace_back

using namespace std;

const long long MOD = 1e9+7;
const long long N = 3e5+5;
const long long Nlog = 17;
const long long Hash = 257;

const double PI = 2.0*acos(0.0);//<cmath>
//const double PI = 3.141592653;
const double E = 2.718281828;

struct bot{
    int p, w;
}x[N];

bool cmp(int a, int b){
    return x[a].p < x[b].p;
}

void solve(){
    
    int n, m;
    cin >> n >> m;
    fop(i,0,n) cin >> x[i].p;
    fop(i,0,n){
        char in;
        cin >> in;
        if(in == 'R') x[i].w = 1;
        else x[i].w = -1;
    }
    
    vector<int> v[2];
    fop(i,0,n){
        v[x[i].p%2].pb(i);
    }
    fop(i,0,2) sort(all(v[i]), cmp);
    
    vector<int> ans(n, -1);
    
    fop(t,0,2){
        vector<int> s;
        for(int i : v[t]){
            if(x[i].w == 1){
                s.pb(i);
            }else{
                if(s.empty()){
                    s.pb(i);
                }else{
                    int j = s.back();
                    s.pop_back();
                    
                    if(x[j].w == 1) ans[i] = ans[j] = (x[i].p-x[j].p)/2;
                    else ans[i] = ans[j] = (x[i].p+x[j].p)/2;
                    //cout << i << ' ' << j << " : " << ans[i] << '\n';
                }
            }
        }
        
        while(s.size() > 1){
            int i = s.back();
            s.pop_back();
            int j = s.back();
            s.pop_back();
            if(x[j].w == 1) ans[i] = ans[j] = m - (x[i].p + x[j].p)/2;
            else ans[i] = ans[j] = m - (x[i].p - x[j].p)/2;
            //cout << i << ' ' << j << " : " << ans[i] << '\n';
        }
    }
    
    fop(i,0,n){
        cout << ans[i] << ' ';
    }
    cout << '\n';
    
}


int main()
{
    fastIO;

    int t=1;
    cin >> t;
    while(t--) solve();

    return 0;
}