import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.StringTokenizer;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args)throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer in = new StringTokenizer(br.readLine());
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));


        int t = Integer.parseInt(in.nextToken());

        for (int i = 0; i < t; i++) {
            in = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(in.nextToken());

            int[] nums = new int[n];
            int count = 0;

            in = new StringTokenizer(br.readLine());
            for (int j = 0; j < n; j++) {
                nums[j] = Integer.parseInt(in.nextToken());
                count += nums[j];
            }


            if (count % n != 0) {
                out.println("NO");
            } else {
                /**
                 * 问题转化为:能否通过题目允许的操作,将所有偏差值变为0。
                 */
                for (int j = 0; j < n; j++) {
                    nums[j] -= (count / n);
                }

                /**
                 * 将j-1位置的所有偏差值,全部累加到j+1位置,然后将j-1置为 0;
                 * 说人话就是模拟能量从左向右转移,清空左侧方碑的偏差。
                 */
                for (int j = 1; j < n - 1; j++) {
                    nums[j + 1] += nums[j - 1];
                    nums[j - 1] = 0;
                }

                boolean flag = true;


                for (int j = 0; j < n; j++) {
                    if (nums[j] != 0) {
                        flag = false;
                        break;
                    }

                }
                out.println(flag ? "YES" : "NO");
            }
        }

        out.flush();
        out.close();
        br.close();
    }
}