#include <stdio.h>
#include <stdlib.h>

typedef struct node{
    int val;
    struct node *next;
}Node;

Node *head=NULL;

Node* createN(int x){
    Node *newnode;
    newnode=(Node*)malloc(sizeof(Node));
    newnode->val=x;
    newnode->next=NULL;
    return newnode;
}

void freeL(){
    Node *p;
    while(head!=NULL){
        p=head->next;
        free(head);
        head=p;
    }
}

void printL(){
    Node *p=head;
    while(p!=NULL){
        printf("%d ",p->val);
        p=p->next;
    }
    printf("\n");
}

void makeL(int n,int a[]){
    int i;
    Node *p,*q;
    head=createN(a[0]);
    
    for(i=1;i<n;i++){
        p=head;
        q=createN(a[i]);
        
        if(p->val>=a[i]){
            q->next=head;
            head=q;
        } else {
            while(p->next!=NULL&&p->next->val<a[i]) p=p->next;
            q->next=p->next;
            p->next=q;
        }
    }
}

int main(void){
    int i,n;
    int *a;
    scanf("%d",&n);
    a=(int*)malloc(sizeof(int)*n);
    
    for(i=0;i<n;i++) scanf("%d",&a[i]);
    
    makeL(n,a);
    printL();
    freeL();
    
    return 0;
}