#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <fstream>
#include <chrono>

using namespace std;

struct TNode {
	int value;
	
	TNode* next;
	TNode* prev;
	
	TNode(int v) {
		value = v;
		next = nullptr;
		prev = nullptr;
	}
};

//typedef TNode* NodeRef;
using NodeRef = TNode*;

void printList(const TNode* head) {
	cout << "==================================\n";
	auto currPtr = head -> next;
	while (currPtr != nullptr) {
		cout << currPtr->value << ", ";
		currPtr = currPtr->next;
	}
	cout << "\n==================================\n";
}


void insertValue(TNode* head, int value, int pos) {
	int i = 0;
	auto currPtr = head;
	while (currPtr != nullptr && i < pos - 2) {
		currPtr = currPtr->next;
		++i;
	}
	
	auto newNode = new TNode(value);
	newNode -> next = currPtr->next;
	currPtr->next = newNode;
}

void deleteValueAtPos(TNode* head, int pos) {
	int i = 0;
	auto currPtr = head;
	while (currPtr != nullptr && i < pos - 1) {
		currPtr = currPtr->next;
		++i;
	}
	
	auto nodeToDelete = currPtr->next;
	currPtr->next = currPtr->next->next;
	
	delete nodeToDelete;
}


int main() {
	TNode* head = new TNode(-100500);
	TNode* currPtr;
	currPtr = head;
	
	int val;
	cin >> val;
	while (val != 0) {
		auto newNode = new TNode(val);
		if (head == nullptr) {
			head = newNode;
			currPtr = head;
		}
		currPtr->next = newNode;
		currPtr = currPtr->next;
		cin >> val;
	}
	
	printList(head);
		
	insertValue(head, 1535, 1);	

	printList(head);

	deleteValueAtPos(head, 1);	
	
	printList(head);
		
	return 0;
}
