#include <iostream>
using namespace std;
    
class Node {
public:
    int data;
    Node *next;
    
    Node(int data) : data(data), next(NULL) {}
};

class LinkedList {
private:
	Node *head, *tail;

public:
	LinkedList() : head(NULL), tail(NULL) {}

	// disabling these just for demonstration purposes,
    // but you really should implement them properly...
    LinkedList(const LinkedList&) = delete;
    LinkedList& operator=(const LinkedList&) = delete;
    //
    
	~LinkedList() {
		Node *p = head, *n;
		while (p) {
			n = p->next;
			delete p;
			p = n;
		}
	}

	Node* add(int data) {
		Node *newNode = new Node(data);
        if (!head) {
            head = newNode;
        }
		if (tail) {
            tail->next = newNode;
        }
		tail = newNode;
		return newNode;
	}
	
	void print() const {
		Node *p = head;
		while (p) {
			cout << p->data << ' ';
			p = p->next;
		}
		cout << endl;
	}

	void deleteAlternateNodes() {
		Node *p = head, *q;
		while ((p != NULL) && (p->next != NULL)) {
			q = p->next;
			p->next = q->next;
			if (tail == q) tail = p;
			delete q;
			p = p->next;
		}
	}
};

int main() {
	LinkedList ll;

	int data;
    while ((cin >> data) && (data != -1)) {
        ll.add(data);
    }

    ll.print();
    ll.deleteAlternateNodes();
    ll.print();

    return 0;
}