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