#include <iostream>
using namespace std;

struct tnode {
    int data;
    tnode* right, *left;
    tnode() {};
    tnode(int x): data(x), left(nullptr), right(nullptr) {};
};

void func_insert(tnode* T, int x) {
    if (x == T->data) return;
    else if (x < T->data) {
        if (T->left == nullptr) {
            tnode* s = new tnode(x);
            T->left = s;
        } else {
            func_insert(T->left,  x);
        }
    } else {
        if (T->right == nullptr) {
            tnode* s = new tnode(x);
            T->right = s;
        } else {
            func_insert(T->right, x);
        }
    }
}

void func_pre(tnode* T) {
    if (T == nullptr) return;
    cout << T->data << " ";
    func_pre(T->left);
    func_pre(T->right);
}
void func_mid(tnode* T) {
    if (T == nullptr) return;
    func_mid(T->left);
    cout << T->data << " ";
    func_mid(T->right);
}
void func_post(tnode* T) {
    if (T == nullptr) return;
    func_post(T->left);
    func_post(T->right);
    cout << T->data << " ";
}

int main() {
    int num, x;
    while (cin >> num) {
        tnode* T = new tnode(x);
        for (int i = 0; i < num; i++) {
            cin >> x;
            if (i == 0) T->data = x;
            else {
                func_insert(T,  x);
            }
        } //建树完毕
        func_pre(T);
        cout << endl;
        func_mid(T);
        cout << endl;
        func_post(T);
        cout << endl;
    }
}
// 64 位输出请用 printf("%lld")