#include using namespace std; /* EC: 0 DM: 1 */ const int N = 50005; const int inf = 1e9; int n, m; vector seg[2][N]; char type[N]; int s[N], d[N]; int dp[N]; struct SegmentTree { #define mid ((l + r) >> 1) int T[N << 2]; int lz[N << 2]; SegmentTree() { for (int i = 0; i < (N << 2); ++i) T[i] = -inf, lz[i] = 0; } void push(int v, int l, int r) { if (!lz[v]) return; if (l < r) lz[v << 1] += lz[v], lz[v << 1 | 1] += lz[v]; T[v] += lz[v]; lz[v] = 0; } void upd_pos(int v, int l, int r, int pos, int val) { push(v, l, r); if (l > r || r < pos || l > pos) return; if (l == r) { T[v] = val; return; } upd_pos(v << 1, l, mid, pos, val); upd_pos(v << 1 | 1, mid + 1, r, pos, val); T[v] = max(T[v << 1], T[v << 1 | 1]); } void upd_seg(int v, int l, int r, int L, int R) { push(v, l, r); if (l > r || R < l || L > r) return; if (L <= l && r <= R) { lz[v]++; push(v, l, r); return; } upd_seg(v << 1, l, mid, L, R); upd_seg(v << 1 | 1, mid + 1, r, L, R); T[v] = max(T[v << 1], T[v << 1 | 1]); } #undef mid } it[2]; void reset() { for (int i = 1; i <= m; ++i) seg[0][i].clear(), seg[1][i].clear(); it[0] = SegmentTree(); it[1] = SegmentTree(); } void solve() { cin >> m >> n; reset(); for (int i = 1; i <= n; ++i) cin >> type[i]; for (int i = 1; i <= n; ++i) cin >> s[i]; for (int i = 1; i <= n; ++i) cin >> d[i]; for (int i = 1; i <= n; ++i) { if (s[i] > d[i]) continue; if (type[i] == 'E' || type[i] == 'C') seg[0][d[i]].push_back(s[i]); else seg[1][d[i]].push_back(s[i]); } // solve it[0].upd_pos(1, 1, m, 1, 0); // dp[1] = 0 it[1].upd_pos(1, 1, m, 1, 0); for (int rig = 1; rig <= m; ++rig) { for (int l : seg[0][rig]) it[0].upd_seg(1, 1, m, 1, l); for (int l : seg[1][rig]) it[1].upd_seg(1, 1, m, 1, l); dp[rig] = max(it[0].T[1], it[1].T[1]); // get in the whole sequence it[0].upd_pos(1, 1, m, rig, dp[rig]); it[1].upd_pos(1, 1, m, rig, dp[rig]); } int ptr = 1; for (int i = 1; i <= n; ++i) { while(ptr <= m && dp[ptr] < i) ++ptr; if (ptr <= m && dp[ptr] >= i) printf("%d ", ptr); else printf("-1 "); } printf("\n"); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int tt; cin >> tt; while(tt--) { solve(); } }