#include #define mms(a,n) memset(a,0,sizeof((a)[0])*(n)) #define mmp(a,b,n) memcpy(a,b,sizeof((b)[0])*(n)) #define lowbit(x) ((x)&-(x)) #define pb push_back #define fi first #define se second #define debug(...) fprintf(stderr,__VA_ARGS__) #define lowbit(x) ((x)&-(x)) #define fo(i,l,r) for(register int i=l,_lim_=r;i<=_lim_;i++) #define fd(i,r,l) for(register int i=r;_lim_=l;i>=_lim_;i--) using namespace std; typedef long long ll; typedef pair pi; namespace io{ const int L=(1<<19)+1; char ibuf[L],*iS,*iT,obuf[L],*oS=obuf,*oT=obuf+L-1,c,st[55];int f,tp; inline char gc(){ if(iS==iT){ iT=(iS=ibuf)+fread(ibuf,1,L,stdin); return iS==iT?EOF:*iS++; } return*iS++; } inline void flush(){fwrite(obuf,1,oS-obuf,stdout);oS=obuf;} inline void putc(char x){*oS++=x;if(oS==oT)flush();} template inline void 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; } template inline void print(I x){ if(!x)putc('0');if(x<0)putc('-'),x=-x; while(x)st[++tp]=x%10+'0',x/=10; while(tp)putc(st[tp--]); } inline void gs(char*s,int&l){ for(c=gc();c<'A'||c>'Z';c=gc()); for(l=0;c<='Z'&&c>='A';c=gc())s[l++]=c; } }; using io::putc; using io::gi; using io::gs; using io::print; const int N=50005; struct ST{ int mx[N<<2],tag[N<<2]; void build(int x,int l,int r){ mx[x]=tag[x]=0; if(l==r)return; int ls=x<<1,rs=ls|1,mid=(l+r)>>1; build(ls,l,mid);build(rs,mid+1,r); } void update(int x,int l,int r,int s,int t,int u){ if(l==s&&r==t){ tag[x]+=u,mx[x]+=u; return; } int ls=x<<1,rs=ls|1,mid=(l+r)>>1; if(t<=mid)update(ls,l,mid,s,t,u); else if(s>mid)update(rs,mid+1,r,s,t,u); else update(ls,l,mid,s,mid,u),update(rs,mid+1,r,mid+1,t,u); mx[x]=max(mx[ls],mx[rs])+tag[x]; } int query(int x,int l,int r,int s,int t){ if(l==s&&r==t)return mx[x]; int ls=x<<1,rs=ls|1,mid=(l+r)>>1; if(t<=mid)return query(ls,l,mid,s,t); if(s>mid)return query(rs,mid+1,r,s,t); return max(query(ls,l,mid,s,mid),query(rs,mid+1,r,mid+1,t))+tag[x]; } }st1,st2; int T,n,m; vector e1[N],e2[N]; int dp[N],s[N],t[N],tp[N]; char str[N][5]; int main(){ gi(T); while(T--){ gi(n);gi(m); for(int i=1,le;i<=m;i++)gs(str[i],le); for(int i=1;i<=m;i++)gi(s[i]); for(int i=1;i<=m;i++)gi(t[i]); for(int i=1;i<=m;i++)if(s[i]n)print(-1);else print(i); putc(" \n"[x==m]); } } io::flush(); return 0; }