#include <iostream>
using namespace std;
//二叉搜索树
struct TreeNode{
int data;
TreeNode *leftchild;
TreeNode *rightchild;
TreeNode(int i):data(i),leftchild(NULL),rightchild(NULL){}
};
int build(int n,TreeNode *root){
TreeNode *pre=NULL;
int flag;
while(root!=NULL){
pre=root;
if(root->data>n){
root=root->leftchild;
flag=0;
}
else {
root=root->rightchild;
flag=1;
}
}
TreeNode *newnode=new TreeNode(n);
if(flag==0){
pre->leftchild=newnode;
}
else pre->rightchild=newnode;
return pre->data;
}
int main(){
int n;
cin>>n;
int x;
cin>>x;
TreeNode *root=new TreeNode(x);
n--;
cout<<-1<<endl;
while(n--){
cin>>x;
int data=build(x,root);
cout<<data<<endl;
}
return 0;
}