import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<String> res = new ArrayList<String>();
int group = in.nextInt();
for(int i = 0; i < group; i++){//读取第一组数据
int beinum = in.nextInt();//读取元素个数
int[] arr = new int[beinum];
for(int j = 0; j < beinum; j++){
arr[j] = in.nextInt();
}
//开始计算
for(int k = 1; k < arr.length-1; k++){//第1个到倒数第2个(包含)
//如果左大于右,即使两者相等也不影响。
if(arr[k-1] >= arr[k+1]){
if((arr[k+1] + arr[k-1]) % 2 == 0){//如果可以平分
int n = (arr[k+1] + arr[k-1])/2;
int tmp = arr[k-1] - n;
arr[k-1] = arr[k-1] - tmp;
arr[k+1] = arr[k+1] + tmp;//就直接两边平分
}else{//如果不能平分,由于左大于右所以左一定要多分1个给右边;由于是从左边遍历过去,所以左边这一个就永远不能被后面使用了,所以要多分一个给右边。
int n = (arr[k+1] + arr[k-1])/2;
int tmp = arr[k-1] - n;
arr[k-1] = arr[k-1] - tmp;
arr[k+1] = arr[k+1] + tmp;
}
}else{
if((arr[k+1] + arr[k-1]) % 2 == 0){//如果右大左的情况
int n = (arr[k+1] + arr[k-1])/2;
int tmp = arr[k+1] - n;
arr[k+1] = arr[k+1] - tmp;
arr[k-1] = arr[k-1] + tmp;//能平分就平分
}else{
int n = (arr[k+1] + arr[k-1])/2;
int tmp = arr[k+1] - n;
arr[k+1] = arr[k+1] - tmp + 1;
arr[k-1] = arr[k-1] + tmp - 1;//不能平分,由于右大于左,右边始终要比左边多一个,这样多出来的这一个就可以在后面灵活分配,所以还是右边要比左边多一个
}
}
if(arr[k] == arr[k+1] && arr[k] == arr[k-1] && arr.length >= 5){//情况3,当三个都相同时,我们不能动他所以直接加2,由于后面i++一次所以时+3,但是长度一定大于等于5,否者越界。
k+=2;
}
}
//判断是否右不同的,
int last = arr[0];
boolean flage = true;
for(int n = 1 ; n < arr.length; n++){
if(arr[n] != last){
flage = false;
break;
}
}
//如果有不同结果为no,反之为yes
if(flage == false){
res.add("NO");
}else{
res.add("YES");
}
}
//输出结果
for(String s : res){
System.out.println(s);
}
}
}