#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}List;
void Listhebing(List *L1,List *L2)
{
List *r=(List*)malloc(sizeof(struct node));
r->next=NULL;
List *p=L1;
List *q=L2;
List *L=r;
while(p!=NULL&&q!=NULL)
{
if(p->data>q->data)
{
L->next=q;
q=q->next;
L=L->next;
}
else
{
L->next=p;
p=p->next;
L=L->next;
}
}
if(p!=NULL)
{
L->next=p;
}
if(q!=NULL)
{
L->next=q;
}
List *t=(List*)malloc(sizeof(struct node));
t=r->next;
if(t==NULL)
{
printf("NULL");
return;
}
while(t->next!=NULL)
{
printf("%d ",t->data);
t=t->next;
}
printf("%d",t->data);
}
void List_creat(List **head,List *pnew)
{
List *pmov=*head;
if(*head==NULL)
{
*head=pnew;
pnew->next=NULL;
}
else{
while(pmov->next!=NULL)
{
pmov=pmov->next;
}
pmov->next=pnew;
pnew->next=NULL;
}
}
int main()
{
List *L1=NULL,*L2=NULL;
int i1;
int i2;
while(scanf("%d",&i1)&&i1>0)
{
List *pmov1=(List*)malloc(sizeof(struct node));
pmov1->data=i1;
List_creat(&L1,pmov1);
}
while(scanf("%d",&i2)&&i2>0)
{
List *pmov2=(List*)malloc(sizeof(struct node));
pmov2->data=i2;
List_creat(&L2,pmov2);
}
Listhebing(L1,L2);
return 0;
}