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

typedef struct __LinkedList_t {
    char* value;
    struct __LinkedList_t* next;
} LinkedList_t;

LinkedList_t* newNode(char* value) {
    LinkedList_t* result = (LinkedList_t*)malloc(sizeof(LinkedList_t));

    result->value = (char*)malloc(sizeof(char)*(strlen(value)+1));
    memcpy(result->value, value, sizeof(char)*(strlen(value)+1));
    result->next = NULL;

    return result;
}

LinkedList_t* addNode(LinkedList_t* head, char* value) {
    LinkedList_t* temp = NULL;
    LinkedList_t* node = NULL;
    LinkedList_t* next = NULL;

    if (head == NULL) {
        head = newNode(value);
    } else {
        for (temp = head; temp != NULL; temp = temp->next) {
            if (strcmp(value, temp->value) < 0) {
                node = newNode(value);
                node->next = head;
                head = node;
                break;
            } else {
                next = temp->next;
                if (next == NULL) {
                    node = newNode(value);
                    temp->next = node;
                    break;
                } else {
                    if (strcmp(value, next->value) < 0) {
                        node = newNode(value);
                        node->next = next;
                        temp->next = node;
                        break;
                    } else {}
                }
            }
        }
    }

    return head;
}

int main() {
    int N = 0;
    char s[101] = {};
    unsigned int i;
    LinkedList_t* head = NULL;
    LinkedList_t* temp = NULL;

    scanf("%d", &N);
    for (int i=0; i<N; ++i) {
        scanf("%s", s);
        head = addNode(head, s);
    }
    for (temp=head; temp!=NULL; temp=temp->next) {
        printf("%s\n", temp->value);
    }

    return 0;
}