def calculate_mex(triplet):
present = set(triplet)
for i in range(4):
if i not in present:
return i
return 4
def is_easy_yes_case(arr):
unique_values = set(x for x in arr if x != -1)
if len(unique_values) > 1:
return False
if len(unique_values) == 1 and 0 in unique_values:
return False
return True
def is_good_array(possible_arr):
n = len(possible_arr)
for i in range(n - 2):
triplet = possible_arr[i:i+3]
if calculate_mex(triplet) != max(triplet) - min(triplet):
return False
return True
def can_make_good_array(arr):
for replacement in range(101):
filled = [replacement if x == -1 else x for x in arr]
if is_good_array(filled):
return True
return False
def process_test_cases():
t = int(input())
for _ in range(t):
n = int(input())
arr = list(map(int, input().split()))
if is_easy_yes_case(arr) or can_make_good_array(arr):
print("YES")
else:
print("NO")
process_test_cases()
ZGVmIGNhbGN1bGF0ZV9tZXgodHJpcGxldCk6CiAgICBwcmVzZW50ID0gc2V0KHRyaXBsZXQpCiAgICBmb3IgaSBpbiByYW5nZSg0KToKICAgICAgICBpZiBpIG5vdCBpbiBwcmVzZW50OgogICAgICAgICAgICByZXR1cm4gaQogICAgcmV0dXJuIDQKCmRlZiBpc19lYXN5X3llc19jYXNlKGFycik6CiAgICB1bmlxdWVfdmFsdWVzID0gc2V0KHggZm9yIHggaW4gYXJyIGlmIHggIT0gLTEpCiAgICBpZiBsZW4odW5pcXVlX3ZhbHVlcykgPiAxOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgbGVuKHVuaXF1ZV92YWx1ZXMpID09IDEgYW5kIDAgaW4gdW5pcXVlX3ZhbHVlczoKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgpkZWYgaXNfZ29vZF9hcnJheShwb3NzaWJsZV9hcnIpOgogICAgbiA9IGxlbihwb3NzaWJsZV9hcnIpCiAgICBmb3IgaSBpbiByYW5nZShuIC0gMik6CiAgICAgICAgdHJpcGxldCA9IHBvc3NpYmxlX2FycltpOmkrM10KICAgICAgICBpZiBjYWxjdWxhdGVfbWV4KHRyaXBsZXQpICE9IG1heCh0cmlwbGV0KSAtIG1pbih0cmlwbGV0KToKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICByZXR1cm4gVHJ1ZQoKZGVmIGNhbl9tYWtlX2dvb2RfYXJyYXkoYXJyKToKICAgIGZvciByZXBsYWNlbWVudCBpbiByYW5nZSgxMDEpOgogICAgICAgIGZpbGxlZCA9IFtyZXBsYWNlbWVudCBpZiB4ID09IC0xIGVsc2UgeCBmb3IgeCBpbiBhcnJdCiAgICAgICAgaWYgaXNfZ29vZF9hcnJheShmaWxsZWQpOgogICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgcmV0dXJuIEZhbHNlCgpkZWYgcHJvY2Vzc190ZXN0X2Nhc2VzKCk6CiAgICB0ID0gaW50KGlucHV0KCkpCiAgICBmb3IgXyBpbiByYW5nZSh0KToKICAgICAgICBuID0gaW50KGlucHV0KCkpCiAgICAgICAgYXJyID0gbGlzdChtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpKQogICAgICAgIGlmIGlzX2Vhc3lfeWVzX2Nhc2UoYXJyKSBvciBjYW5fbWFrZV9nb29kX2FycmF5KGFycik6CiAgICAgICAgICAgIHByaW50KCJZRVMiKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHByaW50KCJOTyIpCgpwcm9jZXNzX3Rlc3RfY2FzZXMoKQo=