#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;
}