import java.util.Scanner;
public class Main {
static Scanner s = new Scanner(System.in);
class Node{
int data;
Node left;
Node right;
Node(int item,Node l,Node r){
this.data=item;
this.left=l;
this.right=r;
}
}
Node root;
int size;
Main(int [] arr){
this.root=new Node(arr[0],null,null);
for(int i=1;i<arr.length;i++)
add(this.root,arr[i]);
}
private void add(Node node,int data) {
if(data<node.data) {
if(node.left==null)
node.left=new Node(data,null,null);
else
add(node.left,data);
}
else
if(data>node.data)
{
if(node.right==null)
node.right=new Node(data,null,null);
else
add(node.right,data);
}
else {
}
}
public void deletenode(int data) {
this.root=deletenode(this.root,data);
}
private Node deletenode(Node node,int data) {
if(node.data>data) {
node.left=deletenode(node.left,data);
return node;
}
else if(node.data<data) {
node.right=deletenode(node.right,data);
return node;
}
else {
if(node.left==null && node.right==null)
return null;
else
if(node.right==null)
return node.left;
else
if(node.left==null)
return node.right;
else {
int rmin=min(node.right);
node.data=rmin;
node.right=deletenode(node.right,rmin);
return node;
}
}
}
public int min(Node node) {
int m= node.data;
if(node.left!=null)
m=min(node.left);
return m;
}
public void display() {
display(this.root);
}
private void display(Node node) {
if(node == null)
return;
System.out.print(node.data+" ");
display(node.left);
display(node.right);
}
public static void main(String[] args) {
int t =s.nextInt();
while(t>0) {
int n = s.nextInt();
int [] a1= new int[n];
for(int i=0;i<n;i++)
a1[i]=s.nextInt();
Main tree = new Main(a1);
int k =s.nextInt();
int [] a2=new int[k];
for(int i=0;i<k;i++)
a2[i]=s.nextInt();
for(int i=0;i<k;i++)
tree.deletenode(a2[i]);
tree.display();
System.out.println();
t--;
}
}
}
failing testcases but output is correct