#include<bits/stdc++.h>
using namespace std;
class node {
public:
int data;
node* next;
node* prev;
};
class stack1 {
public:
stack1();
void push(node* &temp, int data);
void pop(node* &temp);
void show(node* &temp);
node* head;
};
stack1::stack1() {
head = new node;
head->prev = NULL;
head->next = NULL;
}
void stack1::push(node* &temp, int data) {
if (temp->next == NULL) {
// cout << "push"<<data << endl;
node* temp1 = new node;
temp1->next = NULL;//没有这句会访问冲突,后面的show() 也会出错 i dont know why
temp1->data = data;
// cout << temp1->data << endl;
temp->next = temp1;
temp1->prev = temp;
// cout << temp1->prev->next->data << endl;
}
else push(temp->next, data);
}
void stack1::pop(node*& temp) {
node* p = new node;
if (!temp->next) {
if (!temp->prev) cout << "栈为空" << endl;
if (temp->prev) {
temp->prev->next = NULL;
return;
}
}
else {
pop(temp->next);
}
}
vector<int> vec;
vector<int>::iterator i;
void stack1::show(node*& temp) {
node* p = new node;
if (temp->next) {
p = temp->next;
while (p) {
cout << p->data << " ";
p = p->next;
}
}
}
void fun(int n,int a ,stack1* temp) {
if (n == 1) {
temp->push(temp->head, a);
temp->show(temp->head);
reverse(vec.begin(), vec.end());
for (i = vec.begin(); i < vec.end(); i++) {
cout << *i << " ";
}
cout << endl;
}
else {
temp->pop(temp->head);
temp->show(temp->head);
reverse(vec.begin(), vec.end());
for (i = vec.begin(); i < vec.end(); i++) {
cout << *i << " ";
}
cout << endl;
}
}
int main() {
int n,a;
stack1* sta = new stack1;
while (cin >> n>>a) {
fun(n, a, sta);
}
}