import math
def find(u, par):
if par[u] != u:
par[u] = find(par[u], par)
return par[u]
def union(u, v, par, size):
u_root = find(u, par)
v_root = find(v, par)
if u_root == v_root:
return
if size[u_root] < size[v_root]:
par[u_root] = v_root
size[v_root] += size[u_root]
else:
par[v_root] = u_root
size[u_root] += size[v_root]
def ip():
return map(int,input().split())
T=1
T=int(input())
for __ in range(T):
n=int(input())
lst=list(ip())
if n==1:
print("yes")
continue
if (n*(lst[1]-lst[0])+lst[0]) %(n+1)!=0:
print("no")
continue
k1=(n*(lst[1]-lst[0])+lst[0])//(n+1)
if (2*lst[0]-lst[1])%(n+1)!=0:
print("no")
continue
k2=(2*lst[0]-lst[1])//(n+1)
if k1<0 or k2<0:
print("no")
continue
fg=True
for i in range(2,n):
if k1*(i+1)+k2*(n-(i+1)+1)!=lst[i]:
fg=False
break
if fg:
print("yes")
continue
print("no")
aW1wb3J0IG1hdGgKZGVmIGZpbmQodSwgcGFyKToKCiAgICBpZiBwYXJbdV0gIT0gdToKICAgICAgICBwYXJbdV0gPSBmaW5kKHBhclt1XSwgcGFyKQogICAgcmV0dXJuIHBhclt1XQoKZGVmIHVuaW9uKHUsIHYsIHBhciwgc2l6ZSk6CiAgICB1X3Jvb3QgPSBmaW5kKHUsIHBhcikKICAgIHZfcm9vdCA9IGZpbmQodiwgcGFyKQoKICAgIGlmIHVfcm9vdCA9PSB2X3Jvb3Q6CiAgICAgICAgcmV0dXJuIAoKCiAgICBpZiBzaXplW3Vfcm9vdF0gPCBzaXplW3Zfcm9vdF06CiAgICAgICAgcGFyW3Vfcm9vdF0gPSB2X3Jvb3QKICAgICAgICBzaXplW3Zfcm9vdF0gKz0gc2l6ZVt1X3Jvb3RdCiAgICBlbHNlOgogICAgICAgIHBhclt2X3Jvb3RdID0gdV9yb290CiAgICAgICAgc2l6ZVt1X3Jvb3RdICs9IHNpemVbdl9yb290XQoKZGVmIGlwKCk6CiAgICByZXR1cm4gbWFwKGludCxpbnB1dCgpLnNwbGl0KCkpCgoKCgpUPTEKVD1pbnQoaW5wdXQoKSkKZm9yIF9fIGluIHJhbmdlKFQpOgogICAgbj1pbnQoaW5wdXQoKSkKICAgIGxzdD1saXN0KGlwKCkpCgogICAgaWYgbj09MToKICAgICAgICBwcmludCgieWVzIikKICAgICAgICBjb250aW51ZQoKICAgIGlmIChuKihsc3RbMV0tbHN0WzBdKStsc3RbMF0pICUobisxKSE9MDoKICAgICAgICBwcmludCgibm8iKQogICAgICAgIGNvbnRpbnVlCgogICAgazE9KG4qKGxzdFsxXS1sc3RbMF0pK2xzdFswXSkvLyhuKzEpCgogICAgaWYgKDIqbHN0WzBdLWxzdFsxXSklKG4rMSkhPTA6CiAgICAgICAgcHJpbnQoIm5vIikKICAgICAgICBjb250aW51ZQoKICAgIGsyPSgyKmxzdFswXS1sc3RbMV0pLy8obisxKQoKICAgIGlmIGsxPDAgb3IgazI8MDoKICAgICAgICBwcmludCgibm8iKQogICAgICAgIGNvbnRpbnVlCiAgICBmZz1UcnVlCiAgICBmb3IgaSBpbiByYW5nZSgyLG4pOgogICAgICAgIGlmIGsxKihpKzEpK2syKihuLShpKzEpKzEpIT1sc3RbaV06CiAgICAgICAgICAgIGZnPUZhbHNlCiAgICAgICAgICAgIGJyZWFrCiAgICAKICAgIGlmIGZnOgogICAgICAgIHByaW50KCJ5ZXMiKQogICAgICAgIGNvbnRpbnVlCiAgICBwcmludCgibm8iKQ==