#include #define fore(x,a,b) for(int x=a, qwe=b; x st,lazy;int n; STree(int n): st(4*n+5,0), lazy(4*n+5,0), n(n) {} void push(int k, int s, int e){ if(!lazy[k])return; st[k]+=lazy[k]; if(s+1=b||e<=a)return; if(s>=a&&e<=b){ lazy[k]+=v; push(k,s,e);return; } int m=(s+e)/2; upd(2*k,s,m,a,b,v);upd(2*k+1,m,e,a,b,v); st[k]=max(st[2*k],st[2*k+1]); } int query(int k, int s, int e, int a, int b){ if(s>=b||e<=a)return 0; push(k,s,e); if(s>=a&&e<=b)return st[k]; int m=(s+e)/2; return max(query(2*k,s,m,a,b),query(2*k+1,m,e,a,b)); } void upd(int a, int b, int v){upd(1,0,n,a,b,v);} int query(int a, int b){return query(1,0,n,a,b);} }; char types[N]; int start[N], finish[N], best[N], ans[N]; int main(){ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; cin >> T; while(T--){ int m,n; cin >> m >> n; memset(ans,-1,sizeof(ans)); fore(x,0,n)cin>>types[x]; fore(x,0,n)cin>>start[x]; fore(x,0,n)cin>>finish[x]; map > pos[2]; fore(x,0,n)if(start[x]