#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;

}