#include <bits/stdc++.h>
using namespace std;
void scoreDifference(vector<int> &arr, int n){
vector<int> a(n+1, 0);
vector<int> k(n+1, 0);
long long total_sumA = 0, total_sumK = 0;
long long ac = 0, kc = 0;
for (int i = 0; i < n; i++){
if(arr[i] == 1){
a[i+1] = 1;
total_sumA += i+1;
ac++;
}
else if(arr[i] == 2){
k[i+1] = 1;
total_sumK += i+1;
kc++;
}
else if(arr[i] == 3){
a[i+1] = 1;
k[i+1] = 1;
total_sumA += i+1;
total_sumK += i+1;
ac++;
kc++;
}
}
long long sum_of_arshi = 0, count_of_arshi = 0;
long long sum_of_krypto = 0, count_of_krypto = 0;
for (int line = 1; line <= n; line++){
if(a[line] == 1){
sum_of_arshi += line;
count_of_arshi++;
}
long long left_sumA = (count_of_arshi * line) - (sum_of_arshi);
long long right_sumA = (total_sumA - sum_of_arshi) - (ac - count_of_arshi)*line;
long long Arshi = left_sumA + right_sumA;
if(k[line] == 1){
sum_of_krypto += line;
count_of_krypto++;
}
long long left_sumK = (count_of_krypto * line) - (sum_of_krypto);
long long right_sumK = (total_sumK - sum_of_krypto) - (kc - count_of_krypto)*line;
long long Krypto = left_sumK + right_sumK;
cout << abs(Arshi - Krypto) << endl;
}
}
int main() {
// your code goes here
int t; cin >> t;
while(t--){
int x, n; cin >> x >> n;
vector<int> arr(n);
for (int &i : arr){
cin >> i;
}
scoreDifference(arr, n);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHNjb3JlRGlmZmVyZW5jZSh2ZWN0b3I8aW50PiAmYXJyLCBpbnQgbil7Cgl2ZWN0b3I8aW50PiBhKG4rMSwgMCk7Cgl2ZWN0b3I8aW50PiBrKG4rMSwgMCk7CgkKCWxvbmcgbG9uZyB0b3RhbF9zdW1BID0gMCwgdG90YWxfc3VtSyA9IDA7Cglsb25nIGxvbmcgYWMgPSAwLCBrYyA9IDA7Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKyl7CgkJaWYoYXJyW2ldID09IDEpewoJCQlhW2krMV0gPSAxOwoJCQl0b3RhbF9zdW1BICs9IGkrMTsKCQkJYWMrKzsKCQl9CgkJZWxzZSBpZihhcnJbaV0gPT0gMil7CgkJCWtbaSsxXSA9IDE7CgkJCXRvdGFsX3N1bUsgKz0gaSsxOwoJCQlrYysrOwoJCX0KCQllbHNlIGlmKGFycltpXSA9PSAzKXsKCQkJYVtpKzFdID0gMTsKCQkJa1tpKzFdID0gMTsKCQkJdG90YWxfc3VtQSArPSBpKzE7CgkJCXRvdGFsX3N1bUsgKz0gaSsxOwoJCQlhYysrOwoJCQlrYysrOwoJCX0KCX0KCQoJCglsb25nIGxvbmcgc3VtX29mX2Fyc2hpID0gMCwgY291bnRfb2ZfYXJzaGkgPSAwOyAKCWxvbmcgbG9uZyBzdW1fb2Zfa3J5cHRvID0gMCwgY291bnRfb2Zfa3J5cHRvID0gMDsgCglmb3IgKGludCBsaW5lID0gMTsgbGluZSA8PSBuOyBsaW5lKyspewoJCWlmKGFbbGluZV0gPT0gMSl7CgkJCXN1bV9vZl9hcnNoaSArPSBsaW5lOwoJCQljb3VudF9vZl9hcnNoaSsrOwoJCX0KCQkKCQlsb25nIGxvbmcgbGVmdF9zdW1BID0gIChjb3VudF9vZl9hcnNoaSAqIGxpbmUpIC0gKHN1bV9vZl9hcnNoaSk7CgkJbG9uZyBsb25nIHJpZ2h0X3N1bUEgPSAodG90YWxfc3VtQSAtIHN1bV9vZl9hcnNoaSkgLSAoYWMgLSBjb3VudF9vZl9hcnNoaSkqbGluZTsKCQkKCQlsb25nIGxvbmcgQXJzaGkgPSBsZWZ0X3N1bUEgKyByaWdodF9zdW1BOwoJCQoJCWlmKGtbbGluZV0gPT0gMSl7CgkJCXN1bV9vZl9rcnlwdG8gKz0gbGluZTsKCQkJY291bnRfb2Zfa3J5cHRvKys7CgkJfQoJCQoJCWxvbmcgbG9uZyBsZWZ0X3N1bUsgPSAgKGNvdW50X29mX2tyeXB0byAqIGxpbmUpIC0gKHN1bV9vZl9rcnlwdG8pOwoJCWxvbmcgbG9uZyByaWdodF9zdW1LID0gKHRvdGFsX3N1bUsgLSBzdW1fb2Zfa3J5cHRvKSAtIChrYyAtIGNvdW50X29mX2tyeXB0bykqbGluZTsKCQkKCQlsb25nIGxvbmcgS3J5cHRvID0gbGVmdF9zdW1LICsgcmlnaHRfc3VtSzsKCQkKCQkKCQljb3V0IDw8IGFicyhBcnNoaSAtIEtyeXB0bykgPDwgZW5kbDsKCQkKCX0KCQp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCB0OyBjaW4gPj4gdDsKCXdoaWxlKHQtLSl7CgkJaW50IHgsIG47IGNpbiA+PiB4ID4+IG47CgkJdmVjdG9yPGludD4gYXJyKG4pOwoJCWZvciAoaW50ICZpIDogYXJyKXsKCQkJY2luID4+IGk7CgkJfQoJCgkJc2NvcmVEaWZmZXJlbmNlKGFyciwgbik7Cgl9CgkKCQoJcmV0dXJuIDA7Cn0=