#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 30000
#define row 1001
#define col 1001
int str_cmp(char* s1, char* s2)
{
int i;
for (i = 0; i < strlen(s1) && i < strlen(s2); i++)
{
if (s1[i] < s2[i])
{
return -1;
}
else if (s1[i] > s2[i])
{
return 1;
}
}
if (strlen(s1) == strlen(s2))
{
return 0;
}
else if (strlen(s1) > strlen(s2))
{
return 1;
}
else
{
return -1;
}
}
int main()
{
char s[row][col];
int i = 0, j = 0, k;
int m = 0, n = 0;
scanf("%d", &n);
while (scanf("%s", s[i]) != EOF)
{
i++;
}
m = i;
for ( i = 0; i < m; i++)
{
for (j = i + 1, n = i; j < m; j++)
{
if (str_cmp(s[j], s[n]) < 0)
{
n = j;
}
}
if (n != i)
{
strcpy(s[m], s[i]);
strcpy(s[i], s[n]);
strcpy(s[n], s[m]);
}
}
for (i = 0; i < m; i++)
{
puts(s[i]);
}
/*
for (i = 0; i < m; i++)
{
if (s[i][0] == 0)
{
continue;
}
k = 0;
for (j = 0, n = i; j < m; j++)
{
if (s[j][0] == 0)
{
continue;
}
if (str_cmp(s[j], s[n]) < 0)
{
n = j;
k = 1;
}
}
if (k != 0)
{
puts(s[n]);
s[n][0] = 0;
i = -1;
}
else
{
puts(s[i]);
s[i][0] = 0;
}
}
*/
return 0;
}