import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
String[] a = s.split(" ");
BinaryTree t = new BinaryTree(a);
}
}
class BinaryTree{
private class Node{
String data;
Node left;
Node right;
}
private Node root;
private int max = 0;
public BinaryTree(String[] arr){
Scanner scan = new Scanner(System.in);
this.root = construct(arr,0,arr.length-1);
// max_level max = new max_level();
rightView(this.root,1,0);
}
public Node construct(String[] arr,int i, int max){
if(i>max){
return null;
}
if(arr[i].equals("-1")){
return null;
}
Node node = new Node();
node.data = arr[i];
node.left = construct(arr,2*i+1,max);
node.right = construct(arr,2*i+2,max);
return node;
}
public void rightView(Node node, int level,int maxl ){
if(node == null){
return;
}
if(this.max<level){
System.out.print(node.data+ " ");
this.max = level;
maxl = this.max;
}
rightView(node.right,level+1,maxl);
rightView(node.left,level+1,maxl);
}
}