func_code_string: #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;   }