import java.util.*;
public class Main {
private class Node{
int data;
Node left;
Node right;
Node(int data, Node left, Node right){
this.data=data;
this.left=left;
this.right=right;
}
}
private Node root;
public Main(int[] arr){
this.root= constructBST(arr,0,arr.length-1);
}
private Node constructBST(int arr[], int low, int high){
if(low>high){
return null;
}
int mid=(low+high)/2;
Node node= new Node(arr[mid],null,null);
node.left= constructBST(arr,low,mid-1);
node.right=constructBST(arr,mid+1, high);
return node;
}
public void PreOrder(){
this.PreOrder_Traversal(this.root);
}
private void PreOrder_Traversal(Node node){
if(node==null){
return;
}
System.out.print(node.data+" ");
PreOrder_Traversal(node.left);
PreOrder_Traversal(node.right);
}
public static void main(String args[]) {
Scanner sc= new Scanner(System.in);
int tests= sc.nextInt();
for(int test=0; test<tests; test++){
int size=sc.nextInt();
int arr[]= new int[size];
for(int i=0; i<size; i++){
arr[i]=sc.nextInt();
}
int k1=sc.nextInt();
int k2=sc.nextInt();
Arrays.sort(arr);
Main tree= new Main(arr);
System.out.print("# Preorder : ");
tree.PreOrder();
System.out.println();
System.out.print("# Nodes within range are : ");
for(int a:arr){
if(a>=k1 && a<=k2){
System.out.print(a+" ");
}
}
}
}
}
