import java.util.Scanner;
class Main{
static class Node{
int data;
Node left;
Node right;
Node(int data){
this.data = data;
left = right = null;
}
}
static Node root = null;
public static Node constructTree(Node node, int val){
if(node == null){
Node root = new Node(val);
return root;
}
if(val > node.data){
node.right = constructTree(node.right,val);
}
if(val < node.data){
node.left = constructTree(node.left,val);
}
return node;
}
public static void deleteNode(Node node, int val, Node parent, boolean ilc){
if(node == null) return;
if(val > node.data){
deleteNode(node.right,val,node,false);
}else if(val < node.data){
deleteNode(node.left, val,node,true);
}else{
if(node.left == null && node.right == null){
if(ilc){
parent.left = null;
}else{
parent.right = null;
}
}else if(node.left != null && node.right == null){
if(ilc){
parent.left = node.left;
node.left = null;
}else{
parent.right = node.left;
node.left = null;
}
}else if(node.left == null && node.right != null){
if(ilc){
parent.left = node.right;
node.right = null;
}else{
parent.right = node.right;
node.right = null;
}
}else{
int rmin = min(node.right);
node.data = rmin;
deleteNode(node.right,rmin,node,false);
}
}
}
public static int min(Node node){
if(node == null) return Integer.MAX_VALUE;
while(node.left!=null){
node = node.left;
}
return node.data;
}
public static void preOrder(Node node){
if(node == null) return;
System.out.print(node.data+" ");
preOrder(node.left);
preOrder(node.right);
}
public static void solve(){
int n1 = scn.nextInt();
for(int i = 0; i< n1; i++){
root = constructTree(root,scn.nextInt());
}
int n2 = scn.nextInt();
for(int i = 0; i< n2; i++){
deleteNode(root,scn.nextInt(),null,false);
}
preOrder(root);
System.out.println();
}
public static Scanner scn = new Scanner(System.in);
public static void main(String[] args){
int t = scn.nextInt();
while(t-->0){
solve();
}
}
}
