#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgCmNsYXNzIE5vZGUgewpwdWJsaWM6CiAgICBpbnQgZGF0YTsKICAgIE5vZGUgKm5leHQ7CiAgICAKICAgIE5vZGUoaW50IGRhdGEpIDogZGF0YShkYXRhKSwgbmV4dChOVUxMKSB7fQp9OwoKY2xhc3MgTGlua2VkTGlzdCB7CnByaXZhdGU6CglOb2RlICpoZWFkLCAqdGFpbDsKCnB1YmxpYzoKCUxpbmtlZExpc3QoKSA6IGhlYWQoTlVMTCksIHRhaWwoTlVMTCkge30KCgkvLyBkaXNhYmxpbmcgdGhlc2UganVzdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3NlcywKICAgIC8vIGJ1dCB5b3UgcmVhbGx5IHNob3VsZCBpbXBsZW1lbnQgdGhlbSBwcm9wZXJseS4uLgogICAgTGlua2VkTGlzdChjb25zdCBMaW5rZWRMaXN0JikgPSBkZWxldGU7CiAgICBMaW5rZWRMaXN0JiBvcGVyYXRvcj0oY29uc3QgTGlua2VkTGlzdCYpID0gZGVsZXRlOwogICAgLy8KICAgIAoJfkxpbmtlZExpc3QoKSB7CgkJTm9kZSAqcCA9IGhlYWQsICpuOwoJCXdoaWxlIChwKSB7CgkJCW4gPSBwLT5uZXh0OwoJCQlkZWxldGUgcDsKCQkJcCA9IG47CgkJfQoJfQoKCU5vZGUqIGFkZChpbnQgZGF0YSkgewoJCU5vZGUgKm5ld05vZGUgPSBuZXcgTm9kZShkYXRhKTsKICAgICAgICBpZiAoIWhlYWQpIHsKICAgICAgICAgICAgaGVhZCA9IG5ld05vZGU7CiAgICAgICAgfQoJCWlmICh0YWlsKSB7CiAgICAgICAgICAgIHRhaWwtPm5leHQgPSBuZXdOb2RlOwogICAgICAgIH0KCQl0YWlsID0gbmV3Tm9kZTsKCQlyZXR1cm4gbmV3Tm9kZTsKCX0KCQoJdm9pZCBwcmludCgpIGNvbnN0IHsKCQlOb2RlICpwID0gaGVhZDsKCQl3aGlsZSAocCkgewoJCQljb3V0IDw8IHAtPmRhdGEgPDwgJyAnOwoJCQlwID0gcC0+bmV4dDsKCQl9CgkJY291dCA8PCBlbmRsOwoJfQoKCXZvaWQgZGVsZXRlQWx0ZXJuYXRlTm9kZXMoKSB7CgkJTm9kZSAqcCA9IGhlYWQsICpxOwoJCXdoaWxlICgocCAhPSBOVUxMKSAmJiAocC0+bmV4dCAhPSBOVUxMKSkgewoJCQlxID0gcC0+bmV4dDsKCQkJcC0+bmV4dCA9IHEtPm5leHQ7CgkJCWlmICh0YWlsID09IHEpIHRhaWwgPSBwOwoJCQlkZWxldGUgcTsKCQkJcCA9IHAtPm5leHQ7CgkJfQoJfQp9OwoKaW50IG1haW4oKSB7CglMaW5rZWRMaXN0IGxsOwoKCWludCBkYXRhOwogICAgd2hpbGUgKChjaW4gPj4gZGF0YSkgJiYgKGRhdGEgIT0gLTEpKSB7CiAgICAgICAgbGwuYWRkKGRhdGEpOwogICAgfQoKICAgIGxsLnByaW50KCk7CiAgICBsbC5kZWxldGVBbHRlcm5hdGVOb2RlcygpOwogICAgbGwucHJpbnQoKTsKCiAgICByZXR1cm4gMDsKfQ==