#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct l{int I;struct l*ll;}l;l*lI=NULL,*l1=NULL,*Il=NULL;l*II(l*I1,
int I){l*lll,*llI;lll=malloc(sizeof(l));lll->I=I;lll->ll=NULL;if(I1){for(llI=
I1;llI->ll;llI=llI->ll);llI->ll=lll;return I1;}else return lll;}void ll1(void)
{int lIl;srand(time(NULL));for(lIl=0;lIl<20;lIl++)lI=II(lI,rand()%100);}void 
lII(l*lI1){l*Ill;for(Ill=lI1;Ill;Ill=Ill->ll)printf("\45\144\40",Ill->I);
printf("\n");}void IlI(l**lI1){l*Il1;while(*lI1){Il1=*lI1;*lI1=(*lI1)->ll;free
(Il1);}}void IIl(void){l*Ill;int III=1;IlI(&l1);IlI(&Il);for(Ill=lI;Ill;Ill=
Ill->ll){if(III&1)l1=II(l1,Ill->I);else Il=II(Il,Ill->I);if(Ill->ll&&Ill->ll->
I<Ill->I)III++;}}void II1(void){l*l1l,*l1I,*l11;int I1l,I1I;IlI(&lI);l1l=l1;
l1I=Il;while(l1l||l1I){I1l=(l1l==NULL);I1I=(l1I==NULL);while(!I1l||!I1I){if(
I1I||(!I1l&&!I1I&&l1l->I<l1I->I)){lI=II(lI,l1l->I);l11=l1l->ll;if((l11&&(l11->
I<l1l->I))||!l11)I1l=1;l1l=l11;}else{lI=II(lI,l1I->I);l11=l1I->ll;if((l11&&(
l11->I<l1I->I))||!l11)I1I=1;l1I=l11;}}}}int main(void){ll1();lII(lI);do{IIl();
II1();}while(Il);lII(lI);IlI(&lI);IlI(&l1);IlI(&Il);return 0;}
