Question and Answer from L4-M1
import sys
input = sys.stdin.readline
def can_be_anti_palindrome(freq, length):
if length % 2 == 1:
return False
for f in freq.values():
if f > length // 2:
return False
return True
t = int(input())
for _ in range(t):
n, q = map(int, input().split())
arr = list(map(int, input().split()))
# Precompute prefix frequency for quick queries
pref = [[0]*(n+1) for _ in range(4)] # since values are only 1,2,3
for i in range(1, n+1):
for v in (1,2,3):
pref[v][i] = pref[v][i-1]
pref[arr[i-1]][i] += 1
for __ in range(q):
L, R = map(int, input().split())
length = R - L + 1
# build frequency dict for subarray [L, R]
freq = {
1: pref[1][R] - pref[1][L-1],
2: pref[2][R] - pref[2][L-1],
3: pref[3][R] - pref[3][L-1],
}
if can_be_anti_palindrome(freq, length):
print("Yes")
else:
print("No")