#include<bits/stdc++.h>
using namespace std;
struct data
{
	int first,second,pos;
};
int ans[300001],pos[300001];
typedef pair<int,int> p;
data arr[300001];
deque<int> dq1,dq2;
vector<int> vec1,vec2,vec3,vec4;
bool check(data a,data b)
{
	return a.first<b.first;
}
void solve()
{
	int n,m;
	cin>>n>>m;
	for(int i=1 ; i<=n ; i++)
	{
		cin>>arr[i].first;
		arr[i].second=i;
	}
	for(int i=1 ; i<=n;  i++)
	{
		char c;
		cin>>c;
		if(c=='L')
		{
			arr[i].pos=0;
		}
		else
		{
			arr[i].pos=1;
		}
	}
	sort(arr+1,arr+(n+1),check);
	dq1.clear();
	dq2.clear();
	vec1.clear();
	vec2.clear();
	vec3.clear();
	vec4.clear();
	for(int i=1 ; i<=n ; i++)
	{
		ans[i]=-2;
	}
	
	for(int i=1 ; i<=n ; i++)
	{
		if(arr[i].pos==0)
		{
			if(arr[i].first%2==1)
			{
				if(dq1.empty())
				{
					vec1.push_back(i);
				}
				else
				{
					int a=dq1.back();
					ans[arr[a].second]=abs(arr[a].first-arr[i].first);
					ans[arr[i].second]=abs(arr[a].first-arr[i].first);
					dq1.pop_back();
				}
			}
			else
			{
				if(dq2.empty())
				{
					vec2.push_back(i);
				}
				else
				{
					int a=dq2.back();
					ans[arr[a].second]=abs(arr[a].first-arr[i].first);
					ans[arr[i].second]=abs(arr[a].first-arr[i].first);
					dq2.pop_back();
				}
			}
		}
		else
		{
			if(arr[i].first%2==1)
			{
				dq1.push_back(i);
			}
			else
			{
				dq2.push_back(i);
			}
		}
	}
	/*for(int i=1 ; i<=n ; i++)
	{
		//ans[i]=ans[i]/2;
		cout<<ans[i]<<" ";
	}
	cout<<"\n";*/
	while(dq1.size())
	{
		vec3.push_back(dq1.back());
		dq1.pop_back();
	}
	while(dq2.size())
	{
		vec4.push_back(dq2.back());
		dq2.pop_back();
	}
	for(int i=0 ; i<vec1.size()/2 ; i++)
	{
		int a=vec1[2*i];
		int b=vec1[2*i+1];
		ans[arr[a].second]=arr[a].first+arr[b].first;
		ans[arr[b].second]=arr[a].first+arr[b].first;
		//cout<<arr[a].first<<" "<<arr[b].first<<"\n";
	}
	for(int i=0 ; i<vec2.size()/2 ; i++)
	{
		int a=vec2[2*i];
		int b=vec2[2*i+1];
		ans[arr[a].second]=arr[a].first+arr[b].first;
		ans[arr[b].second]=arr[a].first+arr[b].first;
	}
	for(int i=0 ; i<vec3.size()/2 ; i++)
	{
		int a=vec3[2*i];
		int b=vec3[2*i+1];
		ans[arr[a].second]=m+m-arr[a].first-arr[b].first;
		ans[arr[b].second]=m+m-arr[a].first-arr[b].first;
	}
	for(int i=0 ; i<vec4.size()/2 ; i++)
	{
		int a=vec4[2*i];
		int b=vec4[2*i+1];
		ans[arr[a].second]=m+m-arr[a].first-arr[b].first;
		ans[arr[b].second]=m+m-arr[a].first-arr[b].first;
	}
	if(vec1.size()%2==1&&vec3.size()%2==1)
	{
		int a=vec1[vec1.size()-1];
		int b=vec3[vec3.size()-1];
		ans[arr[a].second]=m+m-arr[b].first+arr[a].first;
		ans[arr[b].second]=m+m-arr[b].first+arr[a].first;
	}
	if(vec2.size()%2==1&&vec4.size()%2==1)
	{
		int a=vec2[vec2.size()-1];
		int b=vec4[vec4.size()-1];
		ans[arr[a].second]=m+m-arr[b].first+arr[a].first;
		ans[arr[b].second]=m+m-arr[b].first+arr[a].first;
	}
	for(int i=1 ; i<=n ; i++)
	{
		ans[i]=ans[i]/2;
		cout<<ans[i]<<" ";
	}
	cout<<"\n";
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
}
