// editor1
#include<stdio.h>
#include<stdlib.h>

typedef struct tree
{
    int data;
    struct tree *right,*left;
}node;

node* create(int n)
{
    node *nd=(node*)malloc(sizeof(node));
    nd->data=n;
    nd->left=nd->right=NULL;
    return nd;
}
node* ins(int n,node *root)
{
    if(root==NULL)
    {
       return create(n);
    }
    else
    {
        if(root->left==NULL)
        {
            root->left=create;
        }
        else
        if(root->right==NULL)
        {
            root->right=create(n);
        }
        else
        root->left=ins(n,root);
    }
    return root;
    
}

void preorder(node *root)
{
    if(root==NULL)
    {
       return;
    }
    printf("%d ",root->data);
    preorder(root->left);
    preorder(root->right);
}
void inorder(node *root)
{
    if(root==NULL)
    {
       return;
    }
    inorder(root->left);
    printf("%d ",root->data);
    inorder(root->right);
}
void postorder(node *root)
{
    if(root==NULL)
    {
       return;
    }
    postorder(root->left);
    postorder(root->right);
    printf("%d ",root->data);
}

int main()
{
    int n;
    scanf("%d",&n);
    node *root=NULL;
    for(int i=0;i<n;i++)
    {
        int data;
        scanf("%d",&data);
        root=ins(data,root);
    }
    preorder(root);
    printf("\n");
    inorder(root);
    printf("\n");
    postorder(root);
}