import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();

        while (t-- > 0) {
            int m = sc.nextInt();
            int n = sc.nextInt();

            int[] b = new int[n + 15];
            int[] k1 = new int[n + 15], k5 = new int[n + 15];
            long[] sum_k1 = new long[n + 15], sum_k5 = new long[n + 15];
            long[] sumr_k1 = new long[n + 15], sumr_k5 = new long[n + 15];

            int p1 = 0, p2 = 0;

            for (int i = 1; i <= n; i++) {
                b[i] = sc.nextInt();
                if (b[i] == 1 || b[i] == 3) {
                    p1++;
                    k1[i] = i;
                }
                if (b[i] == 2 || b[i] == 3) {
                    p2++;
                    k5[i] = i;
                }
            }

            for (int i = 1; i <= n; i++) {
                sum_k1[i] = k1[i] + sum_k1[i - 1];
                sum_k5[i] = k5[i] + sum_k5[i - 1];
            }

            for (int i = n; i >= 1; i--) {
                sumr_k1[i] = k1[i] + sumr_k1[i + 1];
                sumr_k5[i] = k5[i] + sumr_k5[i + 1];
            }

            int c1 = 0, c2 = 0;

            for (int i = 1; i <= n; i++) {
                if (k1[i] > 0) {
                    c1++;
                }

                long d1 = (long) i * c1 - sum_k1[i];
                long d2 = sumr_k1[i] - (long) i * p1;
                long r1 = d1 + d2;

                if (k1[i] > 0) {
                    p1--;
                }

                if (k5[i] > 0) {
                    c2++;
                }

                long d5 = (long) i * c2 - sum_k5[i];
                long d6 = sumr_k5[i] - (long) i * p2;
                long r5 = d5 + d6;

                if (k5[i] > 0) {
                    p2--;
                }

                System.out.print(Math.abs(r1 - r5) + " ");
            }
            System.out.println();
        }

        sc.close();
    }
}
