# your code goes here
import sys
def solve():
input_data = sys.stdin.read().split()
if not input_data:
return
iterator = iter(input_data)
num_test_cases = int(next(iterator))
out = []
for _ in range(num_test_cases):
n = int(next(iterator)) # Always 1 for Easy version
m = int(next(iterator))
aarsi_cols = []
krypto_cols = []
for j in range(1, m + 1):
val = int(next(iterator))
if val == 1:
aarsi_cols.append(j)
elif val == 2:
krypto_cols.append(j)
elif val == 3:
aarsi_cols.append(j)
krypto_cols.append(j)
# Helper to compute total distances sum for all target positions y in 1..M
def compute_scores(cols, m):
count = len(cols)
if count == 0:
return [0] * (m + 1)
total_sum = sum(cols)
scores = [0] * (m + 1)
left_count = 0
left_sum = 0
col_ptr = 0
for y in range(1, m + 1):
# Move pointer for columns <= y
while col_ptr < count and cols[col_ptr] <= y:
left_count += 1
left_sum += cols[col_ptr]
col_ptr += 1
right_count = count - left_count
right_sum = total_sum - left_sum
# Score at bullseye column y
scores[y] = (y * left_count - left_sum) + (
right_sum - y * right_count
)
return scores
aarsi_scores = compute_scores(aarsi_cols, m)
krypto_scores = compute_scores(krypto_cols, m)
# Build answer array for each cell y from 1 to M
res = []
for y in range(1, m + 1):
sa = aarsi_scores[y]
sk = krypto_scores[y]
# Compare sa and sk depending on target question requirement
# Example outputting SA and SK:
res.append(f"{sa} {sk}")
out.append("\n".join(res))
print("\n".join(out))
if __name__ == "__main__":
solve()