// editor1
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    int data;
    struct node *left;
    struct node *right;
}Node;
Node *root=NULL;
Node *create(int val){
    Node *newnode=(Node*)malloc(sizeof(Node));
    newnode->data=val;
    newnode->left=NULL;
    newnode->right=NULL;
    return newnode;
    }
    Node *buildTree(int arr[],int n,int i){
        if(i>=n || arr[i]==0){
            return NULL;
            
        }
        Node *root=create(arr[i]);
        root->left=buildTree(arr,n,2*i+1);
        root->right=buildTree(arr,n,2*i+2);
        return root;
    }
    void preorder(Node *root){
        if(root==NULL){
            return;
        }
        printf("%d",root->data);
        preoder(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);
        if(n<=0||n>100){
            printf("Invalid input");
            return 0;
        }
        int arr[n];
        for(int i=0;i<n;i++){
            scanf("%d",&arr[i]);
        }
        Node *root=buildTree(arr,n,0);
        preorder(root);
        printf("\n");
        inorder(root);
        printf("\n");
        postorder(root);
        printf("\n");
    }