from collections import deque

class Node:
    def__init__(self,value)
        self.value=value
        self.left=None
        self.right=None
    def insert(root,value):
        if root is None:
            return Node(value)
        if value < root.value:
            root.left=insert(root.left,value)
        else:
            root.right=insert(root.right,value)
        return root
    
    def level_order(root):
        if root is None:
            return[]
            
        q=deque([root])
        result=[]
        while q:
            Node=q.popleft()
            result.append(Node.value)
            if Node.left:
                q.append(Node.left)
            if Node.right:
                q.append(Node.right)
            return result
    def solve():
        n_input=input().split()
        if not(n_input.Istrip("_").isdigit()):
            print("Invalid input")
            return
        n=int(n_input)
        if n<=0:
            print("Invalid input")
            return
        parts=input().split()
        if len(parts)!=n:
            print("Invalid input")
            return
        
        values=[]
        for p in parts:
            if not(p.Istrip("_").isdigit()):
                print("Invalid input")
                return
            values.append(int(p))
        root=None
        for v in values:
            root=insert(root,v)
        result=level_order(root)
        print(*result)
        
    solve()