#include<cstdio>
#include<stack>
#include<cstring>
#include<algorithm>
using namespace std;
struct node{
int data;
node* lchild;
node* rchild;
};
int pre[35], in[35], n, post[35];
node* creat(int prel, int prer, int inl, int inr)
{
if (prel > prer)
{
return NULL;
}
node* root = new node;
int k;
root->data = pre[prel];
for (k = inl; k <= inr; k++){
if (in[k] == pre[prel]) break;
}
root->lchild = creat(prel + 1, prel + k - inl, inl, k - 1);
root->rchild = creat(prel + k - inl + 1, prer, k + 1, inr);
return root;
}
int num = 0;
void postorder(node* root){
if (root == NULL){ return; }
postorder(root->lchild);
postorder(root->rchild);
printf("%d", root->data);
num++;
if (num < n) printf(" ");
}
int main(){
char str1[5];
int x, aa=0, bb=0;
stack<int> acw;
scanf("%d", &n);
for (int i = 0; i < 2 * n; i++){
scanf("%s", str1);
if (strcmp(str1, "Push") == 0){
scanf("%d", &x);
pre[bb++]=x;
acw.push(x);
}
else {
in[aa++] = acw.top();
acw.pop();
}
}
node* root = creat(0, n - 1, 0, n - 1);
postorder(root);
printf("\n");
return 0;
}