#include using namespace std; #define pb push_back #define mod 1000000007 #define INF 2e9 #define fi first #define se second typedef long long ll; ll tc,n,m,orn,t[2][222222],d[55555],ans[55555],l,col,z[2][222222]; char ch; vector >v[55555]; struct item { ll l,r,col,pos; }a[55555]; void build(ll v, ll l, ll r) { if(l==r) { t[0][v]=t[1][v]=0; z[0][v]=z[1][v]=0; return; } ll mid=(l+r)/2; build(v*2,l,mid); build(v*2+1,mid+1,r); t[0][v]=t[1][v]=0; z[0][v]=z[1][v]=0; } void push(ll col, ll v) { z[col][v*2]+=z[col][v]; z[col][v*2+1]+=z[col][v]; t[col][v*2]+=z[col][v]; t[col][v*2+1]+=z[col][v]; z[col][v]=0; } void upd(ll col, ll v, ll l, ll r, ll x, ll y, ll k) { if(x>r||yr||y>tc; for(;tc--;) { cin>>m>>n; orn=n; for(ll i=1;i<=n;i++) scanf("\n%c",&ch),a[i].col=(ch=='E'||ch=='C'),a[i].pos=i; for(ll i=1;i<=n;i++) scanf("%lld",&a[i].l); for(ll i=1;i<=n;i++) scanf("%lld",&a[i].r); for(ll i=1;i<=n;i++) if(a[i].l>a[i].r) swap(a[i],a[n--]),i--; for(ll i=1;i<=n;i++) v[a[i].r].pb({a[i].l,a[i].col}); build(1,0,m); for(ll i=1;i<=m;i++) { for(ll j=0;j=1;i--) ans[i]=min(ans[i],ans[i+1]); for(ll i=1;i<=orn;i++) if(ans[i]==INF) ans[i]=-1; for(ll i=1;i<=orn;i++) printf("%lld ",ans[i]); for(ll i=1;i<=m;i++) v[i].clear(); cout<