def mex(triplet):
s = set(triplet)
for i in range(5):
if i not in s:
return i
return 5 # Not really needed
def is_good(triplet):
return mex(triplet) == max(triplet) - min(triplet)
def can_make_good(a):
n = len(a)
for i in range(n - 2):
sub = [a[i], a[i + 1], a[i + 2]]
if -1 not in sub:
if not is_good(sub):
return False
else:
ok = False
for x in range(4):
for y in range(4):
for z in range(4):
temp = sub[:]
if temp[0] == -1:
temp[0] = x
if temp[1] == -1:
temp[1] = y
if temp[2] == -1:
temp[2] = z
if is_good(temp):
ok = True
break
if ok:
break
if ok:
break
if not ok:
return False
return True
def solve():
n = int(input())
a = list(map(int, input().split()))
print("yes" if can_make_good(a) else "no")
# Driver
if __name__ == "__main__":
t = int(input())
for _ in range(t):
solve()
ZGVmIG1leCh0cmlwbGV0KToKICAgIHMgPSBzZXQodHJpcGxldCkKICAgIGZvciBpIGluIHJhbmdlKDUpOgogICAgICAgIGlmIGkgbm90IGluIHM6CiAgICAgICAgICAgIHJldHVybiBpCiAgICByZXR1cm4gNSAgIyBOb3QgcmVhbGx5IG5lZWRlZAoKZGVmIGlzX2dvb2QodHJpcGxldCk6CiAgICByZXR1cm4gbWV4KHRyaXBsZXQpID09IG1heCh0cmlwbGV0KSAtIG1pbih0cmlwbGV0KQoKZGVmIGNhbl9tYWtlX2dvb2QoYSk6CiAgICBuID0gbGVuKGEpCiAgICBmb3IgaSBpbiByYW5nZShuIC0gMik6CiAgICAgICAgc3ViID0gW2FbaV0sIGFbaSArIDFdLCBhW2kgKyAyXV0KICAgICAgICBpZiAtMSBub3QgaW4gc3ViOgogICAgICAgICAgICBpZiBub3QgaXNfZ29vZChzdWIpOgogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgZWxzZToKICAgICAgICAgICAgb2sgPSBGYWxzZQogICAgICAgICAgICBmb3IgeCBpbiByYW5nZSg0KToKICAgICAgICAgICAgICAgIGZvciB5IGluIHJhbmdlKDQpOgogICAgICAgICAgICAgICAgICAgIGZvciB6IGluIHJhbmdlKDQpOgogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gc3ViWzpdCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlbXBbMF0gPT0gLTE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wWzBdID0geAogICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZW1wWzFdID09IC0xOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFsxXSA9IHkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVtcFsyXSA9PSAtMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBbMl0gPSB6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzX2dvb2QodGVtcCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvayA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgaWYgb2s6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBpZiBvazoKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICBpZiBub3Qgb2s6CiAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgIHJldHVybiBUcnVlCgpkZWYgc29sdmUoKToKICAgIG4gPSBpbnQoaW5wdXQoKSkKICAgIGEgPSBsaXN0KG1hcChpbnQsIGlucHV0KCkuc3BsaXQoKSkpCiAgICBwcmludCgieWVzIiBpZiBjYW5fbWFrZV9nb29kKGEpIGVsc2UgIm5vIikKCiMgRHJpdmVyCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICB0ID0gaW50KGlucHV0KCkpCiAgICBmb3IgXyBpbiByYW5nZSh0KToKICAgICAgICBzb2x2ZSgpCg==