import java.util.*;

public class Main {
    static class Node {
        Node left;
        Node right;
        int data;
        Node(int data) {
            this.data = data;
        }
    }

    static Node buildTree(int[] vals) {
        if (vals.length == 0 || vals[0] == -1) return null;
        Node root = new Node(vals[0]);
        Queue<Node> q = new LinkedList<>();
        q.offer(root);
        int i = 1;
        while (!q.isEmpty() && i < vals.length) {
            Node curr = q.poll();
            if (i < vals.length && vals[i] != -1) {
                curr.left = new Node(vals[i]);
                q.offer(curr.left);
            }
            i++;
            if (i < vals.length && vals[i] != -1) {
                curr.right = new Node(vals[i]);
                q.offer(curr.right);
            }
            i++;
        }
        return root;
    }

    static List<Integer> res = new ArrayList<>();

    static void seq(Node root) {
        if (root == null) return;
        seq(root.left);
        res.add(root.data);
        seq(root.right);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] vals = new int[n];
        for (int i = 0; i < n; i++) {
            vals[i] = sc.nextInt();
        }

        Node root = buildTree(vals);
        seq(root);

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < res.size(); i++) {
            sb.append(res.get(i));
            if (i != res.size() - 1) sb.append(" ");
        }
        System.out.println(sb.toString());
    }
}