#include using namespace std; int T,n,m,t[50005],s[50005],rs[50005],tree0[200005],tree1[200005],lazy0[200005],lazy1[200005],f[50005][2]; vector g0[50005],g1[50005]; void Down0(int k) { tree0[2*k]+=lazy0[k]; lazy0[2*k]+=lazy0[k]; tree0[2*k+1]+=lazy0[k]; lazy0[2*k+1]+=lazy0[k]; lazy0[k]=0; } void Update0(int k,int l,int r,int L,int R,int val) { if(l>R||L>r) return; if(L<=l&&r<=R) { tree0[k]+=val; lazy0[k]+=val; return; } Down0(k); int mid=(l+r)/2; Update0(2*k,l,mid,L,R,val); Update0(2*k+1,mid+1,r,L,R,val); tree0[k]=max(tree0[2*k],tree0[2*k+1]); } void Update00(int k,int l,int r,int pos,int val) { if(l==r) { tree0[k]=val; return; } Down0(k); int mid=(l+r)/2; if(pos<=mid) Update00(2*k,l,mid,pos,val); else Update00(2*k+1,mid+1,r,pos,val); tree0[k]=max(tree0[2*k],tree0[2*k+1]); } int Query0(int k,int l,int r,int L,int R) { if(l>R||L>r) return 0; if(L<=l&&r<=R) return tree0[k]; Down0(k); int mid=(l+r)/2; return max(Query0(2*k,l,mid,L,R),Query0(2*k+1,mid+1,r,L,R)); } void Down1(int k) { tree1[2*k]+=lazy1[k]; lazy1[2*k]+=lazy1[k]; tree1[2*k+1]+=lazy1[k]; lazy1[2*k+1]+=lazy1[k]; lazy1[k]=0; } void Update1(int k,int l,int r,int L,int R,int val) { if(l>R||L>r) return; if(L<=l&&r<=R) { tree1[k]+=val; lazy1[k]+=val; return; } Down1(k); int mid=(l+r)/2; Update1(2*k,l,mid,L,R,val); Update1(2*k+1,mid+1,r,L,R,val); tree1[k]=max(tree1[2*k],tree1[2*k+1]); } void Update11(int k,int l,int r,int pos,int val) { if(l==r) { tree1[k]=val; return; } Down1(k); int mid=(l+r)/2; if(pos<=mid) Update11(2*k,l,mid,pos,val); else Update11(2*k+1,mid+1,r,pos,val); tree1[k]=max(tree1[2*k],tree1[2*k+1]); } int Query1(int k,int l,int r,int L,int R) { if(l>R||L>r) return 0; if(L<=l&&r<=R) return tree1[k]; Down1(k); int mid=(l+r)/2; return max(Query1(2*k,l,mid,L,R),Query1(2*k+1,mid+1,r,L,R)); } int main() { ios_base::sync_with_stdio(false); //freopen("TEST.INP","r",stdin); cin>>T; while(T--) { cin>>m>>n; for(int i=1;i<=m;i++) { g0[i].clear(); g1[i].clear(); } char c; for(int i=1;i<=n;i++) { cin>>c; if(c=='E'||c=='C') t[i]=0; else t[i]=1; } for(int i=1;i<=n;i++) cin>>s[i]; int x; for(int i=1;i<=n;i++) { cin>>x; if(x=1;i--) rs[i]=min(rs[i],rs[i+1]); for(int i=1;i<=n;i++) if(rs[i]==1e9) cout<<-1<<' '; else cout<