/*
 *
 *  lista osztaly 
 */

#include <iostream>

using namespace std;

struct elem
{
    elem *elozo;
    elem *kovetkezo;
    int   ertek;
};

class lista
{
public:
    lista();    // inicializal
    ~lista();   // felszamol
    void beszur( elem *p, int i);
    void rendezve_beszur( int i);
    void kiir_elore();
    void kiir_hatra();
    int  elemszam() { return elemek_szama; }
private:    
    elem *elso;
    elem *utolso;
    int   elemek_szama;
    
    lista(const lista&);
    void operator=(const lista&);
};

int main()
{
    int ii;
    lista l1;    // inicializal
    lista l2;

    while ( cin >> ii )
    {
        l1.rendezve_beszur(ii);
    }
    cout << "======= jojjon a masik =========" << endl;
    cin.clear();  // ez fontos!
    while ( cin >> ii )
    {
        l2.rendezve_beszur(ii);
    }
    cout << "elemszam = " << l1.elemszam() << endl;
    l1.kiir_elore();
    cout << "elemszam = " << l2.elemszam() << endl;
    l2.kiir_elore();
    
    return 0;
    // felszamolodik l1 és l2 is
}

lista::lista()
{
    elso = utolso = 0;  // this->elso = this->utolso = 0;
    elemek_szama = 0;   // this->elemek_szama = 0;
}

lista::~lista()
{
    while ( elso )      // this->elso
    {
        elem *kurrens = elso;
        elso = kurrens->kovetkezo;
        // elso->elozo = 0;
        // --elemek_szama;
        delete kurrens;
    }
}

void lista::beszur( elem *p, int ii)
{
    elem *uj = new elem;
    uj->ertek = ii;
    uj->elozo = uj->kovetkezo = 0;
    
    if ( !elso )    // ures a lista
    {
        elso = utolso = uj;
    }
    else if ( !p )  // nem ures lista vegere appendalunk
    {
        uj->elozo = utolso;
        utolso->kovetkezo = uj;
        utolso = uj;
    }
    else if ( p == elso ) // nem ures lista elso poziciojara szurunk be
    {
        uj->kovetkezo = elso;
        elso->elozo = uj;
        elso = uj;
    }
    else    // nem ures lista kozbulso poziciojara szurunk be p ele
    {
        uj->kovetkezo = p;
        uj->elozo = p->elozo;
        uj->elozo->kovetkezo = uj;
        p->elozo = uj;
    }
    ++elemek_szama;
}

void lista::rendezve_beszur( int ii )
{
    elem *kurrens = elso;
    
    while ( kurrens && ii > kurrens->ertek )
    {
        kurrens = kurrens->kovetkezo;
    }
    beszur( kurrens, ii);
}

void lista::kiir_elore()
{
    elem *kurrens = elso;
    
    while ( kurrens )
    {
        cout << kurrens->ertek << endl;
        kurrens = kurrens->kovetkezo;
    }
}

void lista::kiir_hatra()
{
    elem *kurrens = utolso;
    
    while ( kurrens )
    {
        cout << kurrens->ertek << endl;
        kurrens = kurrens->elozo;
    }
}