import java.util.*;
public class Main {
private class Node{
Node left;
Node right;
int data;
}
private Node root;
public void constract(int ar[]) {
for (int i = 0; i < ar.length; i++) {
this.root = construct(ar[i], root);
}
}
private Node construct(int val, Node nn){
if (nn == null) {
Node nk = new Node();
nk.data = val;
return nk;
}
if (nn.data > val) {
if (nn.left != null) {
construct(val, nn.left);
} else {
Node nk = new Node();
nk.data = val;
nn.left = nk;
}
} else if (nn.data < val) {
if(nn.right!=null) {
construct(val,nn.right);
}else {
Node nk=new Node();
nk.data=val;
nn.right=nk;
}
}
return root;
}
public int delete(int value) {
return this.delete(this.root,value);
}
private int delete(Node node,int value) {
int result = 0;
if(node==null)
return 0;
if(node.data==value)
{result=node.data;
Node t=node.right;
int min=minValue(t);
delete(min);
node.data=min;
return result;
}
while(node.left.data!=value && node.right.data!=value) {
if(node.data>value) {
node=node.left;
}else {
node=node.right;
}
}
if(node.left.data==value) {
if(node.left.left==null && node.left.right==null) {
result=node.left.data;
node.left=null;
return result;
}
if(node.left.left!=null && node.left.right==null) {
result=node.left.data;
node.left=node.left.left;
return result;
}
if(node.left.left==null && node.left.right!=null) {
result=node.right.data;
node.left=node.left.right;
return result;
}
if(node.left.left!=null && node.left.right!=null) {
result=node.left.data;
Node t=node.left.right;
int min=minValue(t);
delete(min);
node.left.data=min;
return result;
}
}
if(node.right.data==value) {
if(node.right.left==null && node.right.right==null) {
result=node.right.data;
node.right=null;
return result;
}
if(node.right.left!=null && node.right.right==null) {
result=node.right.data;
node.right=node.right.left;
return result;
}
if(node.right.left==null && node.right.right!=null) {
result=node.right.data;
node.right=node.right.right;
return result;
}
if(node.right.left!=null && node.right.right!=null) {
result=node.right.data;
Node t=node.right.right;
int min=minValue(t);
delete(min);
node.right.data=min;
return result;
}
}
return 0;
}
private int minValue(Node root)
{
int minv = root.data;
while (root.left != null)
{
minv = root.left.data;
root = root.left;
}
return minv;
}
public void preOrder() {
preOrder(this.root);
}
private void preOrder(Node node) {
if(node==null)
return;
System.out.print(node.data+" ");
preOrder(node.left);
preOrder(node.right);
}
public static void main(String args[]) {
Scanner s=new Scanner(System.in);
Main bst=new Main();
int t=s.nextInt();
while(t!=0){
int n=s.nextInt();
int ar[]=new int[n];
for(int i=0;i<n;i++) {
ar[i]=s.nextInt();
}
bst.constract(ar);
int d=s.nextInt();
for(int i=0;i<d;i++) {
bst.delete(s.nextInt());
}
bst.preOrder();
t–;
}
}
}