#include"bits/stdc++.h" #define F(i,j,n) for(register int i=j;i<=n;i++) #define D(i,j,n) for(register int i=j;i>=n;i--) #define ll long long #define lc (k<<1) #define rc (k<<1|1) #define N 50010 using namespace std; namespace io{ const int L=(1<<19)+1; char ibuf[L],*iS,*iT,c;int f; char gc(){ if(iS==iT){ iT=(iS=ibuf)+fread(ibuf,1,L,stdin); return iS==iT?EOF:*iS++; } return*iS++; } templatevoid gi(I&x){ for(f=1,c=gc();c<'0'||c>'9';c=gc())if(c=='-')f=-1; for(x=0;c<='9'&&c>='0';c=gc())x=x*10+(c&15);x*=f; } }; using io::gi; using io::gc; int t,n,m,p,f[N],h[N];char c; struct no{ int l,r,t; bool operator<(const no&b)const{return r>1; if(p<=m)add(lc,l,m,p,q,x); if(q>m)add(rc,m+1,r,p,q,x); mx[k]=max(mx[lc],mx[rc]); } }a[2]; int main(){ gi(t); while(t--){ gi(n);gi(m);p=1; a[0].clear();a[1].clear(); F(i,1,m){ c=0;while(c<'A'||c>'Z')c=gc(); x[i].t=(c=='E'||c=='C'); } F(i,1,m)gi(x[i].l); F(i,1,m)gi(x[i].r); sort(x+1,x+m+1); F(i,1,m)h[i]=n+1; F(i,1,n){ while(p<=m&&x[p].r==i){if(x[p].l