#include<iostream>
#include<stdio.h>
#include<string.h>
#include<malloc.h>
using namespace std;
typedef struct {
int *top;
int *base;
int stack_size;
}stacks;
void creat_stack(stacks &a){
a.base=(int *)malloc(100*sizeof(int));
a.top=a.base;
a.stack_size=100;
}
void pop(stacks &s){
if(s.base==s.top){
return ;
}else{
s.top--;
}
}
bool isempty(stacks s){
if (s.top==s.base){
return 1;
}else {
return 0;
}
}
void push(stacks &s,int e){
*s.top=e;
s.top++;
}
int get_top(stacks s){
if (s.top==NULL)
return -1;
else
return *(s.top-1);
}
int main(){
stacks a;
int n,tmp;
creat_stack(a);
scanf("%d",&n);
for (int i=1;i<=n;i++){
scanf("%d",&tmp);
if (tmp==get_top(a)){
pop(a);
}else {
// cout<<"aa"<<endl;
push(a,tmp);
}
}
while(!isempty(a)){
printf("%d\n",get_top(a));
pop(a);
}
return 0;
}