#inclustdio.h>


struct Node {
    int data;
    Node* left;
    Node* right;
};

Node* createNode(int data) {
    Node* newNode = new Node();
    newNode->data = data;
    newNode->left = newNode->right = NULL;
    return newNode;
}

Node* insert(Node* root, int data) {
    if (root == NULL) return createNode(data);

    if (data < root->data)
        root->left = insert(root->left, data);
    else
        root->right = insert(root->right, data);

    return root;
}

void postorder(Node* root) {
    if (root == NULL) return;
    postorder(root->left);
    postorder(root->right);
    cout << root->data << " ";
}

int main() {
    int n, rootData;
    cin >> n >> rootData;

    Node* root = NULL;
    root = insert(root, rootData);

    for (int i = 1; i < n; i++) {
        int x;
        cin >> x;
        insert(root, x);
    }

    postorder(root);
    return 0;
}