#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int max(int arr[1001], int n) {
int max = -1000;
for (int i = 0; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
void tja(int a[1001], int n, int all[1001]) {
for (int i = 0; i < n; i++) {
if (a[i] != 0) {
all[a[i]] = 1;
}
}
}
int main() {
int n, j = 0;
int m;
scanf("%d", &m);
for (int u = 0; u < m; u++) {
scanf("%d", &n);
int a[1001] = { 0 };
int b[1001] = { 0 };
int arr[1001], all[1000];
for (int i = 0; i < 1001; i++) {
arr[i] = 0;
all[i] = 0;
}
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &b[i]);
}
int amax = max(a, n);
int bmax = max(b, n);
tja(a, n, all);
for (int i = 1; i < bmax + 1; i++) {
tja(a, n, all);
while (j < n) {
if (b[j] == i) {
arr[a[j]]++;
}
j++;
}
j = 0;
int flag = 0, q = 0;
for(int v=0;v<n;v++){
if(b[v]==i){
flag=1;
}
}
if (flag) {
printf("%d=", i);
printf("{");
int first = 1;
for (int k = 1; k < amax + 1; k++) {
if (arr[k] != 0 || all[k] == 1) {
if (!first) {
printf(",");
}
if (arr[k] != 0) {
printf("%d=%d", k, arr[k]);
} else if (all[k] == 1) {
printf("%d=0", k);
}
first = 0;
}
}
printf("}\n");
for (int i = 0; i < 1001; i++) {
arr[i] = 0;
all[i] = 0;
}
}
flag=0;
}
}
return 0;
}