#include<iostream>
using namespace std;
class node{
public:
node *next;
long long int data;
node(long long int d){
next = NULL;
data = d;
}
};
void insertAtTail(node *&head, long long int data){
if(head==NULL){
head= new node(data);
return;
}
node *temp = head;
while(temp->next!=NULL){
temp = temp->next;
}
temp->next = new node(data);
return;
}
node *buildInput(node *&head, long long int n){
int data;
for(int i=0;i<n;i++){
cin>>data;
insertAtTail(head,data);
}
return head;
}
// void print(node *head){
// while(head !=NULL){
// cout<< head->data<<" ";
// head = head->next;
// }
// }
int length(node*head){
int count=0;
while(head!=NULL){
head=head->next;
count++;
}
return count;
}
void merge(node *a, node *b){
int l1=length(a);
int l2 = length(b);
node *c=NULL;
for(int i=0;i<(l1+l2);i++){
if(a==NULL)
{
c=b;
b=b->next;
c=c->next;
}
else if(b==NULL){
c=a;
a=a->next;
c=c->next;
}
if(a->data < b->data){
c=a;
a=a->next;
c=c->next;
}
else{
c=b;
b=b->next;
c=c->next;
}
}
while(c!=NULL){
cout<<c<<" ";
c=c->next;
}
}
int main(){
node *head1 = NULL;
node *head2 = NULL;
int t;
long long int n1,n2;
cin>>t;
for(int i=0;i<t;i++){
cin>>n1;
head1 = buildInput(head1,n1);
cin>>n2;
head2 = buildInput(head2,n2);
merge(head1,head2);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIG5vZGV7CnB1YmxpYzoKICAgIG5vZGUgKm5leHQ7CiAgICBsb25nIGxvbmcgaW50IGRhdGE7CiAgICBub2RlKGxvbmcgbG9uZyBpbnQgZCl7CiAgICAgICAgbmV4dCA9ICBOVUxMOwogICAgICAgIGRhdGEgPSBkOwogICAgfQp9Owp2b2lkIGluc2VydEF0VGFpbChub2RlIComaGVhZCwgbG9uZyBsb25nIGludCBkYXRhKXsKICAgIGlmKGhlYWQ9PU5VTEwpewogICAgICAgIGhlYWQ9IG5ldyBub2RlKGRhdGEpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG5vZGUgKnRlbXAgPSBoZWFkOwogICAgd2hpbGUodGVtcC0+bmV4dCE9TlVMTCl7CiAgICAgICB0ZW1wID0gdGVtcC0+bmV4dDsKICAgIH0KICAgIHRlbXAtPm5leHQgPSBuZXcgbm9kZShkYXRhKTsKICAgIHJldHVybjsKfQpub2RlICpidWlsZElucHV0KG5vZGUgKiZoZWFkLCBsb25nIGxvbmcgaW50IG4pewogICAgaW50IGRhdGE7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBjaW4+PmRhdGE7CiAgICAgICAgaW5zZXJ0QXRUYWlsKGhlYWQsZGF0YSk7CiAgICB9CiAgICByZXR1cm4gaGVhZDsKfQovLyB2b2lkIHByaW50KG5vZGUgKmhlYWQpewovLyAgICAgd2hpbGUoaGVhZCAhPU5VTEwpewovLyAgICAgICAgIGNvdXQ8PCBoZWFkLT5kYXRhPDwiICI7Ci8vICAgICAgICAgaGVhZCA9IGhlYWQtPm5leHQ7Ci8vICAgICB9Ci8vIH0KaW50IGxlbmd0aChub2RlKmhlYWQpewoJaW50IGNvdW50PTA7Cgl3aGlsZShoZWFkIT1OVUxMKXsKCQloZWFkPWhlYWQtPm5leHQ7CgkJY291bnQrKzsKCX0KCXJldHVybiBjb3VudDsKfQp2b2lkIG1lcmdlKG5vZGUgKmEsIG5vZGUgKmIpewoJaW50IGwxPWxlbmd0aChhKTsKCWludCBsMiA9IGxlbmd0aChiKTsKCW5vZGUgKmM9TlVMTDsKCWZvcihpbnQgaT0wO2k8KGwxK2wyKTtpKyspewoJCQoJCWlmKGE9PU5VTEwpCgkJewoJCQljPWI7CgkJCWI9Yi0+bmV4dDsKCQkJYz1jLT5uZXh0OwoJCX0KCQllbHNlIGlmKGI9PU5VTEwpewoJCQljPWE7CgkJCWE9YS0+bmV4dDsKCQkJYz1jLT5uZXh0OwoJCX0KCQkKCQlpZihhLT5kYXRhIDwgYi0+ZGF0YSl7CgkJCWM9YTsKCQkJYT1hLT5uZXh0OwoJCQljPWMtPm5leHQ7CgkJfQoJCWVsc2V7CgkJCWM9YjsKCQkJYj1iLT5uZXh0OwoJCQljPWMtPm5leHQ7CgkJfQoJCQoJfQoJd2hpbGUoYyE9TlVMTCl7CgkJY291dDw8Yzw8IiAiOwoJCWM9Yy0+bmV4dDsKCX0JCn0KCmludCBtYWluKCl7Cm5vZGUgKmhlYWQxID0gTlVMTDsKbm9kZSAqaGVhZDIgPSBOVUxMOwoKICAgIGludCB0OwoJbG9uZyBsb25nIGludCBuMSxuMjsKICAgIGNpbj4+dDsKCiAgICBmb3IoaW50IGk9MDtpPHQ7aSsrKXsKICAgICAgICBjaW4+Pm4xOwogICAgICAgIGhlYWQxID0gYnVpbGRJbnB1dChoZWFkMSxuMSk7CiAgICAgICAgY2luPj5uMjsKICAgICAgICBoZWFkMiA9IGJ1aWxkSW5wdXQoaGVhZDIsbjIpOwogICAgICAgIG1lcmdlKGhlYWQxLGhlYWQyKTsKICAgICAgICAKICAgIH0KCiAgcmV0dXJuIDA7Cn0=