#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Node{
    public:
    Node *next;
    int data;
    Node(int data){
        this->data=data;
        this->next=nullptr;
    }
};
class ManualSort{
    public:
    Node *head=nullptr;
    Node *tail=nullptr;
    void add(int num){
        Node *newnode=new Node(num);
        if(head==nullptr){
            head=newnode;
            tail=newnode;
        }
        else{
            if(newnode->data<head->data){
                newnode->next=head;
                head=newnode;
            }
            Node *curr=head;
            while(curr->next!=nullptr && curr->next->data<num){
                curr=cur->next;
            }
            curr->next=newnode;
            curr=newnode;
        }
    }
    void disp(){
        Node *ptr=head;
        while(ptr!=nullptr){
            cout<<ptr->data<<" ";
            ptr=ptr->next;
        }
    }
};
class LinkedList{
    public:
    Node *head=nullptr;
    Node *tail=nullptr;
    void add(int num){
        Node *newnode=new Node(num);
        if(head==nullptr){
            head=newnode;
            tail=newnode;
        }
        else{
            tail->next=newnode;
            tail=newnode;
        }
    }
    void display(){
        Node *ptr=head;
        while(ptr!=nullptr){
            cout<<ptr->data<<" ";
            ptr=ptr->next;
        }
        cout<<endl;
    }
    void sortvalue(){
        vector<int> list;
        Node *ptr=head;
        while(ptr!=nullptr){
            list.push_back(ptr->data);
            ptr=ptr->next;
        }
        sort(list.begin(),list.end());
        for(int n : list){
            cout<<n<<" ";
        }
        cout<<endl;
    }
};
int main(){
    int n;
    LinkedList obj;
    ManualSort obj2;
    while(cin>>n){
        obj.add(n);
        obj2.add(n);
    }
    obj.display();
    obj.sortvalue();
    obj2.disp();
}