#[allow(unused_imports)]
use std::cmp::{min, max};
use std::io::{BufWriter, stdout, stdin, Write, Read};
#[derive(Default)]
struct Scanner {
buffer: Vec<String>,
}
impl Scanner {
fn next<T: std::str::FromStr>(&mut self) -> T {
loop {
if let Some(token) = self.buffer.pop() {
return token.parse::<T>().ok().expect("Failed parse");
}
let mut input = String::new();
stdin().read_line(&mut input).expect("Failed read");
self.buffer = input.split_whitespace()
.rev()
.map(String::from)
.collect();
}
}
fn next_line(&mut self) -> String {
let mut input = String::new();
stdin().read_line(&mut input).expect("Failed read");
input.trim().to_string()
}
}
#[allow(unused_variables)]
macro_rules! io_init {
($scan: ident, $out: ident) => {
let mut $scan: Scanner = Scanner::default();
let $out = &mut BufWriter::new(stdout());
};
}
fn check(x: usize, f: &Vec<bool>, b: &Vec<bool>) -> bool {
!f[x] && !b[x] && b[x + 1]
}
fn main() {
io_init!(scan, out);
let T: i32 = scan.next();
for _ in 0..T {
let n: usize = scan.next();
let q: usize = scan.next();
let mut cnt: i32 = 0;
let mut p = vec![0i32; n + 1];
let mut f_arr = vec![false; n + 1];
let mut b_arr = vec![false; n + 2];
let mut x_val = 0;
for i in 1..=n {
p[i] = scan.next();
x_val = max(x_val, p[i]);
f_arr[i] = (x_val == i as i32);
}
let s: String = scan.next();
let s_chars: Vec<char> = s.chars().collect();
for i in 0..n {
b_arr[i + 1] = s_chars[i] == 'R';
}
for i in 1..n {
if check(i, &f_arr, &b_arr) {
cnt += 1;
}
}
for _ in 0..q {
let i: usize = scan.next();
if i >= 2 {
if check(i - 1, &f_arr, &b_arr) {
cnt -= 1;
}
}
if i <= n - 1 {
if check(i, &f_arr, &b_arr) {
cnt -= 1;
}
}
b_arr[i] = !b_arr[i];
if i >= 2 {
if check(i - 1, &f_arr, &b_arr) {
cnt += 1;
}
}
if i <= n - 1 {
if check(i, &f_arr, &b_arr) {
cnt += 1;
}
}
if cnt != 0 {
writeln!(out, "NO").unwrap();
} else {
writeln!(out, "YES").unwrap();
}
}
}
}
I1thbGxvdyh1bnVzZWRfaW1wb3J0cyldCnVzZSBzdGQ6OmNtcDo6e21pbiwgbWF4fTsKdXNlIHN0ZDo6aW86OntCdWZXcml0ZXIsIHN0ZG91dCwgc3RkaW4sIFdyaXRlLCBSZWFkfTsKCiNbZGVyaXZlKERlZmF1bHQpXQpzdHJ1Y3QgU2Nhbm5lciB7CiAgICBidWZmZXI6IFZlYzxTdHJpbmc+LAp9CgppbXBsIFNjYW5uZXIgewogICAgZm4gbmV4dDxUOiBzdGQ6OnN0cjo6RnJvbVN0cj4oJm11dCBzZWxmKSAtPiBUIHsKICAgICAgICBsb29wIHsKICAgICAgICAgICAgaWYgbGV0IFNvbWUodG9rZW4pID0gc2VsZi5idWZmZXIucG9wKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnBhcnNlOjo8VD4oKS5vaygpLmV4cGVjdCgiRmFpbGVkIHBhcnNlIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG11dCBpbnB1dCA9IFN0cmluZzo6bmV3KCk7CiAgICAgICAgICAgIHN0ZGluKCkucmVhZF9saW5lKCZtdXQgaW5wdXQpLmV4cGVjdCgiRmFpbGVkIHJlYWQiKTsKICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBpbnB1dC5zcGxpdF93aGl0ZXNwYWNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXYoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChTdHJpbmc6OmZyb20pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29sbGVjdCgpOwogICAgICAgIH0KICAgIH0KICAgIGZuIG5leHRfbGluZSgmbXV0IHNlbGYpIC0+IFN0cmluZyB7CiAgICAgICAgbGV0IG11dCBpbnB1dCA9IFN0cmluZzo6bmV3KCk7CiAgICAgICAgc3RkaW4oKS5yZWFkX2xpbmUoJm11dCBpbnB1dCkuZXhwZWN0KCJGYWlsZWQgcmVhZCIpOwogICAgICAgIGlucHV0LnRyaW0oKS50b19zdHJpbmcoKQogICAgfQp9CgojW2FsbG93KHVudXNlZF92YXJpYWJsZXMpXQptYWNyb19ydWxlcyEgaW9faW5pdCB7CiAgICAoJHNjYW46IGlkZW50LCAkb3V0OiBpZGVudCkgPT4gewogICAgICAgICBsZXQgbXV0ICRzY2FuOiBTY2FubmVyID0gU2Nhbm5lcjo6ZGVmYXVsdCgpOwogICAgICAgICBsZXQgJG91dCA9ICZtdXQgQnVmV3JpdGVyOjpuZXcoc3Rkb3V0KCkpOwogICAgfTsKfQoKZm4gY2hlY2soeDogdXNpemUsIGY6ICZWZWM8Ym9vbD4sIGI6ICZWZWM8Ym9vbD4pIC0+IGJvb2wgewogICAgIWZbeF0gJiYgIWJbeF0gJiYgYlt4ICsgMV0KfQoKZm4gbWFpbigpIHsKICAgIGlvX2luaXQhKHNjYW4sIG91dCk7CiAgICBsZXQgVDogaTMyID0gc2Nhbi5uZXh0KCk7CiAgICBmb3IgXyBpbiAwLi5UIHsKICAgICAgICBsZXQgbjogdXNpemUgPSBzY2FuLm5leHQoKTsKICAgICAgICBsZXQgcTogdXNpemUgPSBzY2FuLm5leHQoKTsKICAgICAgICBsZXQgbXV0IGNudDogaTMyID0gMDsKICAgICAgICBsZXQgbXV0IHAgPSB2ZWMhWzBpMzI7IG4gKyAxXTsKICAgICAgICBsZXQgbXV0IGZfYXJyID0gdmVjIVtmYWxzZTsgbiArIDFdOwogICAgICAgIGxldCBtdXQgYl9hcnIgPSB2ZWMhW2ZhbHNlOyBuICsgMl07CiAgICAgICAgbGV0IG11dCB4X3ZhbCA9IDA7CiAgICAgICAgZm9yIGkgaW4gMS4uPW4gewogICAgICAgICAgICBwW2ldID0gc2Nhbi5uZXh0KCk7CiAgICAgICAgICAgIHhfdmFsID0gbWF4KHhfdmFsLCBwW2ldKTsKICAgICAgICAgICAgZl9hcnJbaV0gPSAoeF92YWwgPT0gaSBhcyBpMzIpOwogICAgICAgIH0KICAgICAgICBsZXQgczogU3RyaW5nID0gc2Nhbi5uZXh0KCk7CiAgICAgICAgbGV0IHNfY2hhcnM6IFZlYzxjaGFyPiA9IHMuY2hhcnMoKS5jb2xsZWN0KCk7CiAgICAgICAgZm9yIGkgaW4gMC4ubiB7CiAgICAgICAgICAgIGJfYXJyW2kgKyAxXSA9IHNfY2hhcnNbaV0gPT0gJ1InOwogICAgICAgIH0KICAgICAgICBmb3IgaSBpbiAxLi5uIHsKICAgICAgICAgICAgaWYgY2hlY2soaSwgJmZfYXJyLCAmYl9hcnIpIHsKICAgICAgICAgICAgICAgIGNudCArPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciBfIGluIDAuLnEgewogICAgICAgICAgICBsZXQgaTogdXNpemUgPSBzY2FuLm5leHQoKTsKICAgICAgICAgICAgaWYgaSA+PSAyIHsKICAgICAgICAgICAgICAgIGlmIGNoZWNrKGkgLSAxLCAmZl9hcnIsICZiX2FycikgewogICAgICAgICAgICAgICAgICAgIGNudCAtPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIGkgPD0gbiAtIDEgewogICAgICAgICAgICAgICAgaWYgY2hlY2soaSwgJmZfYXJyLCAmYl9hcnIpIHsKICAgICAgICAgICAgICAgICAgICBjbnQgLT0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBiX2FycltpXSA9ICFiX2FycltpXTsKICAgICAgICAgICAgaWYgaSA+PSAyIHsKICAgICAgICAgICAgICAgIGlmIGNoZWNrKGkgLSAxLCAmZl9hcnIsICZiX2FycikgewogICAgICAgICAgICAgICAgICAgIGNudCArPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIGkgPD0gbiAtIDEgewogICAgICAgICAgICAgICAgaWYgY2hlY2soaSwgJmZfYXJyLCAmYl9hcnIpIHsKICAgICAgICAgICAgICAgICAgICBjbnQgKz0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiBjbnQgIT0gMCB7CiAgICAgICAgICAgICAgICB3cml0ZWxuIShvdXQsICJOTyIpLnVud3JhcCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd3JpdGVsbiEob3V0LCAiWUVTIikudW53cmFwKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0K