use proconio::input; fn main(){ input!{ n: usize, a: [usize; n], q: usize, qs: [(usize, usize, usize, usize); q], } let mut cnt = vec![0_usize; n+1]; for x in a{ cnt[x] += 1; } let mut zero = vec![0_usize; n+1]; let mut one = vec![0_usize; n+1]; for i in 1..=n{ zero[i] = zero[i-1]+if cnt[i] == 0{1} else{0}; one[i] = one[i-1]+if cnt[i] == 1{1} else{0}; } for (l, r, lp, rp) in qs{ if zero[r]-zero[l-1] > 0 || zero[rp]-zero[lp-1] > 0{ println!("No"); continue; } let ll = l.max(lp); let rr = r.min(rp); println!("{}", if ll <= rr && one[rr]-one[ll-1] > 0{"No"} else{"Yes"}); } }