#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
int id;
char x[101];
}Point;
int compare(const void *a, const void *b) {
Point* A = (Point*)a;
Point* B = (Point*)b;
if(strlen(A->x)!=strlen(B->x))
{
return strlen(B->x)-strlen(A->x);
}
return strcmp(A->x,B->x);
}
int main() {
int n;
scanf("%d", &n);
Point *arr = (Point*)malloc(n * sizeof(Point));
for (int i = 0; i < n; i++) {
arr[i].id=i+1;
scanf("%s", arr[i].x);
qsort(arr, n, sizeof(Point), compare);
for(int i=0;i<n;i++)
{
printf("%s\n",arr[i].x);
}
free(arr);
return 0;
}